2013-08-03 75 views
2

我從正好格式如下GitHub的API模塊發回的字符串:我想知道換行字符串

Added debug mode for developers 

Simply add the class DEBUG to the body and you'll notice little boxes 
scattered throughout your site attached to each grid item. 

,如果有一個CSS選項來清除這些線作爲瀏覽器讀取上述像這樣:

Added debug mode for developers Simply add the class DEBUG to the body and you'll notice little boxes 
scattered throughout your site attached to each grid item. 

我真的不希望與javacsript分開分割字符串,但如果我有我想我會:)

我試過word-break:break-word;然而這Ĵ ust將行分割成更長的字符串,不含空格。 我也嘗試過white-space: nowrap;但是這實際上只是不包裝。

如果我控制檯登錄數據,chrome在'developers'這個詞之後有兩個個字符,這就是導致換行的原因,這些可以通過javascript來選擇嗎?

任何幫助將是偉大的!

+0

沒有HTML,這是一個fullstring,換行像上面 –

+0

如果字符串即將從API回格式化你不已經擁有了它作爲一個JS字符串?如果是這樣,只需用'
'標籤替換換行符。 – nnnnnn

+0

有沒有換行符? –

回答

5

你的問題有點不清楚,但我假設你想保持所包含的字符串中的換行符 - 而不是完全無視他們的瀏覽器的默認。

你會想的pre選項爲white-space屬性之一。

/* Display text exactly as entered */ 
white-space: pre; 

/* Display as entered, plus extra linebreaks as needed for long lines */ 
white-space: pre-wrap; 

/* Display newlines as entered, plus extra linebreaks as needed for long lines */ 
white-space: pre-line; 

有關差異的一些注意事項:

  1. pre處於<pre>標籤包裝整個事情的等價物。

  2. prepre-wrap之間的區別在於是否會根據需要爲長行添加額外換行符。

  3. pre-wrappre-line之間的區別在於是否保留了所有的空格(包括空格)或只有換行符。

  4. pre-line是用<br>標籤取代所有換行符的平等。

你可以看到不同風格在這裏進行比較:http://jsfiddle.net/Gcexh/


,你會遇到的另一個問題是,你有最後兩行的輸入之間斷行,當你可能不一定要在那裏換行。

您可以通過刪除任何單換行,且只保留周圍的雙新行一樣,前兩行分開的那些解決這個問題。

這將理想在服務器端完成,但也可以在JavaScript中做過這樣的:
(與感謝@JanDvorak):

text = text.replace(/(\n\s*\n)|\n/g, "$1 ") 
+0

雖然這讓我接近,但它仍然包裝文本有點奇怪:/ –

+1

你是什麼意思的「有點怪異」? – jcsanyi

+0

如果你想,你可以在這裏看到:http://www.sassygrids.com –

0

我不認爲有一種方法用CSS來做到這一點。 JavaScript的方式:

var myStr = "Your multiline\n\nstring..."; 
for (;;) 
{ 
    if (myStr.indexOf("\n") != -1) 
      myStr = myStr.replace("\n", " "); 
    else 
      break; 
} 
+0

嗯...該循環可以重構爲在循環頭中使用條件 - 這可以提高可讀性。提示:'do ... while' –

+0

這不起作用,如果有幫助,我有控制檯記錄數據,並且是什麼讓行實際上在字符串中斷開的是:''↵'。雖然我不知道那是什麼? –

+0

我只是爲了快速的例子。它的工作。不管他想要什麼,他都可以重構它。這只是想法。 –