2014-10-09 78 views
1

我被抓我就這一個,現在一會兒頭,我希望能有一個解決方案就在某個地方..分割使用JavaScript字符串,但忽略了HTML字符它

我也有類似的一些HTML字符串爲此:一定數目的字符後

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.' 

我需要使用JavaScript來截斷/分割文本,不計算在鏈接的HTML,但仍呈現在結果文本的鏈接。因此,舉例來說,如果我在20個字符截斷它,那麼我想會顯示以下,但與「Lorem存有」文本依然與:

Lorem ipsum dolor si 

如果我只是用str.substring (0,20)然後在字符串中的HTML字符也顯示,所以我得到:

<a href="link.com">L 

剛剛呈現爲一個超鏈接L:

L 

不有人對我有什麼建議嗎?我試圖做一個搜索,但找不到合適的答案。

如果有幫助,我可以使用原始的非HTML文本和完整的HTML文本(包含鏈接),我可以在JS中使用它們。我不想只使用原始文本,因爲它不會呈現任何鏈接。例如,如果我將文本分成200個字符,那麼我希望所有鏈接仍然以HTML格式呈現,但只有200個字符的實際屏幕文本要顯示給用戶。

希望這是有道理的。非常感謝您的幫助!

約翰

編輯:爲了澄清什麼,我試圖完成;

我有一個帖子(文本字符串),其中有鏈接。我想統計文字中的字符,但不包括鏈接中的HTML字符。然後我想截取文本仍然包括的HTML鏈接,但只能向用戶顯示X個字符。

例如;

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.' 

當截斷爲40個字符,將顯示爲:

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adi' 

所以它包含了鏈接,但只顯示文本的用戶的40個字符。如果我使用str.substring(0,40),那麼它包含的字符數的聯繫,並最終顯示:

'<a href="link.com">Lorem ipsum</a> dolo' 

希望這是有道理的。抱歉的混淆。

+1

你想做什麼?你爲什麼要這樣做? – brso05 2014-10-09 17:21:28

+1

是否可以截斷文本,然後將其放到頁面上?這將是一個更乾淨的方式來做到這一點。 – forgivenson 2014-10-09 17:21:56

+0

通常的過程是創建一個臨時元素,將字符串追加到新創建的元素,使用一些DOM操作方法,並在需要時將操作內容轉換回字符串。 – Teemu 2014-10-09 17:24:40

回答

2

您可以使用它像這樣:

var s = '<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.' 

var div = document.createElement("div"); 
div.innerHTML = s; 
var text = div.textContent || div.innerText; 

var substr = text.substring(0, 20); 
//=> "Lorem ipsum dolor si" 
+0

謝謝anubhava,我不認爲這會保留文本中的鏈接。我編輯我的文章進一步解釋,但我試圖保持文本中的鏈接,但只顯示20個字符的文字給用戶在屏幕上,鏈接仍然完好無損,如果存在。 – John 2014-10-09 17:31:09

+0

此代碼僅用於顯示非HTML 20個字符以供使用。你總是有你的原始HTML與鏈接來休息。 – anubhava 2014-10-09 17:37:14

+0

據我所知,這不起作用,但不幸的是,因爲我需要在短文本中呈現鏈接,因爲短文本可能長達數百個字符。要截斷的字符數是可變的,範圍可以從20到500,所以我需要鏈接仍然存在。 – John 2014-10-09 17:45:33

1

如果字符串結構是一致的,你表現;那麼,這可能工作:

1.Split您的原始字符串用空格 2.註冊第一(移動)或最後一個(POP)的吐盡

VAR longString的=「Lorem存有悲坐阿梅德「;

shortString = longString.split(「」).shift(); - > // Lorem

+0

謝謝Anh,但字符串結構不一致,將包含各種鏈接和字符。 – John 2014-10-09 17:43:10