[英]Converting new lines to paragraph/br HTML tags, can this be a single regex?
我正在處理的應用程序讓用戶以明文形式輸入內容,稍后將以HTML格式顯示。 為了盡可能好地顯示用戶的內容,我們將內容轉換如下:
由兩個或多個新行字符分隔的任何文本塊都包含在<p>標記中。 剝離出新的行字符(以及其間的任何空格)。
任何單個新行字符(以及周圍的空格)都將替換為<br />標記。
我目前通過將文本放在兩個正則表達式替換中來實現這一點,但是想知道它是否可以合並為一個。 這就是我現在所擁有的(JavaScript):
// content holds the text to process
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace(/\n/g, '<br />') + '</p>';
有兩種不同的替換字符串。 因此,單個替換呼叫是不可能的。
但第二個replace()可以更改為更有效的純字符串替換。
content = '<p>' + content.replace(/\n([ \t]*\n)+/g, '</p><p>')
.replace('\n', '<br />') + '</p>';
所以,有單一的正則表達式。 :)
更新
Javascript詐唬了我。 字符串replace
句柄僅出現第一次。
還給出了replaceAll
幾種可能的解決方法實現。
我面臨着類似的要求 - 將wpautop功能模仿為javascript(用於主題定制器)。
所以這是我解決問題的方法:
首先,在有兩個換行符時更換外殼。
to = to.replace(/\n{2}/g, ' </p><p>');
然后,在只剩下一個換行符時替換大小寫。
to = to.replace(/\n/g, ' <br />');
最后將整個內容包裝在<p>標簽中
to = '<p>' + to + '</p>';
我用了&nbsp; 因為我的造型暗示了段落后的邊距。 如果您不需要它們,可以省略它們。 另外,一個缺點是單行換行插入到下一段的開頭,但這是我可以忍受的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.