2016-11-04 55 views
4

我目前工作的一個項目,其中API吐出被格式化這樣的描述:添加後全大寫的標題換行字符串中的

這是標題這是一個段落。這是另一段。

,我試圖得到的結果是

這是標題

這是一個段落

這是另一款

我一直玩一些正則表達式,但努力獲得理想的結果,我目前的嘗試是在每個大寫字母/單詞的末尾添加換行符。

var myString = "THIS IS A TITLE This is a paragraph of random text. This is another paragraph of random text."; 
var myStringFormatted = myString.replace(/([A-Z]+)/g, ",$1").replace(/,/g," <br />").split(","); 

是否可以得到想要的結果? (jsfiddle示例:https://jsfiddle.net/srwwpxh4/1/

回答

7

您可以使用積極的向前看。

它首先查找非單詞字符,大寫字母后跟小寫字符並在之前插入換行符。

var r = /\W+(?=[A-Z][a-z])/g, 
 
    s = 'THIS IS A TITLE This is a paraGraph. This is another paragraph.'; 
 

 
console.log(s.replace(r, '$&\n'));

+0

隨着'/(?= [A-Z] [A-Z])/ g',如果隨機文本內的字是大寫的,斷行會被插入那裏。 –

+0

這很完美。我從來沒有遇到過積極的向前看,所以我會做一些進一步的準備 - 歡呼! –

+0

@WiktorStribiżew,我插入了一個非單詞字符的搜索。 –