2013-02-19 233 views
20

我使用這個插件來解析設置高亮bbcodeparser如何 n轉換成HTML換行符

但它沒有功能\n轉換爲<br/>

我嘗試添加此:

replace(/\r?\n|\r/g, '<br>') 

...但沒有奏效。

如何實現換行功能?

+0

請在這裏發表的jsfiddle鏈路 – 2013-02-19 01:17:14

+1

'STR = str.replace(/ \ N/G, '
');' – adeneo 2013-02-19 01:18:01

+1

的[取代的Javascript新行字符]可能重複(http://stackoverflow.com /我的問題/ 2136648/javascript-replacement-new-line-character) – Fraser 2013-02-19 01:22:09

回答

2

實際上,瀏覽器不會將\r\n視爲真實的新行,在使用PHP nl2br時,在Javascript中,您可以使用下面的函數作爲nl2br()的等效項。

function nl2br (str, is_xhtml) { 
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>'; 
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');} 
+0

$ 1和$ 2在這裏做了什麼? – Foreever 2014-05-19 09:15:32

+0

如果您指定了正確的CSS樣式,瀏覽器會將其視爲新行。 – Foreever 2014-05-19 11:28:00

+0

@但是:'$ 1'和'$ 2'指的是正則表達式中的第一和第二組(在'()'中是一個組)。因此,代碼將保留字符串的原始部分,並在新行之前插入'
'標籤。 – 2014-05-19 11:43:11

72

如果你這樣做是爲了展示新的生產線和在HTML返回車廂,那麼你就需要明確地去做。你可以在css中通過設置空白屬性預行的值。

<span style="white-space: pre-line">@Model.CommentText</span> 
+0

輝煌!堆棧溢出救援再次... – daGUY 2014-11-14 02:55:43

+0

編輯:雖然它表示它不支持IE瀏覽器,它似乎在IE8 + 11工作正常:http://caniuse.com/#search=white-space – 2015-01-16 00:01:30

+1

預行會也崩潰了空白序列。如果你想保留空格,嘗試預先包裝。還有其他選項:https://developer.mozilla.org/en-US/docs/Web/CSS/white-space?v = example – KayakinKoder 2017-05-17 02:20:02