2016-11-04 56 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,我插入了一个非单词字符的搜索。 –