我无法弄明白,如何将每个第n个换行符更改为空格。
我有这个正则表达式代码将所有换行符更改为空格:
this.value.replace(/\n/g, ' ');
它改变了一切,但它应该改变除第3个之外的每个换行符,例如:
这些行应更改为:
我应该用什么正则表达式来获得这些结果?
答案 0 :(得分:2)
您可以将每一行捕获到单独的组中,并在第一组和第二组之后将\n
替换为space
:
var re = /([^\n]*)\n([^\n]*)\n([^\n]*)(\n|$)/g;
var str = 'line1\nline2\nli3\nli4\nli5\nli6';
var result = str.replace(re, '$1 $2 $3$4');
答案 1 :(得分:1)
您可以使用.replace
回调函数:
function replaceLineBreaks(text) {
var index = 1;
return text.replace(/\n/g, function(){
return index++ % 3 == 0 ? '\n' : ' ';
});
}
var replacedText = replaceLineBreaks(text);
<强>演示:强>
var text = "line1\n\
line2\n\
line3\n\
line4\n\
line5\n\
line6\n";
function replaceLineBreaks(text) {
var index = 1;
return text.replace(/\n/g, function() {
return index++ % 3 == 0 ? '<br>' : ' '; //br for testing purposes
});
}
document.body.innerHTML = replaceLineBreaks(text);