在javascript中删除换行符

时间:2016-03-17 07:16:05

标签: javascript

我在textarea中有一个文本,并使用.val()属性获取值。我想删除换行符(这是双精度空间)?

我尝试使用.replace

sampleText = sampleText.replace(/(\r\n|\n|\r)/gm,"");

但它没有给我正确的解决方案。

来自我的textarea的示例文本 enter image description here

当我尝试.replace()时,它会像这样做

enter image description here

如何删除样品2和样品3之间的空间?它应该看起来像.. enter image description here

3 个答案:

答案 0 :(得分:2)

按新行拆分,过滤掉空行,最后加入

sampleText = sampleText.split(/\n|\r/).filter(function(value){
  return value.trim().length > 0;
}).join("\n");

示例



var sampleText = "Sample 1\nSample 2\n\nSample 3";
sampleText = sampleText.split("\n").filter(function(value){
      return value.trim().length > 0;
    }).join("\n");
document.write('<pre>'+sampleText+'</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您需要使用群组过滤中的+号加倍,以便仅包含双重出现,并且不要将其替换为空字符串,而是使用新换行符。
有关加号的更多信息,建议您阅读http://www.regular-expressions.info/repeat.html

这样每次出现的次数都会被一次出现所取代,这就是你想要的猜测

var sampleText = "Sample1\n\nSample2\n\r\n\r\r\r\nSample3";
document.write('<pre>Before:\n'+sampleText);


// The plus makes sure the matched pattern is repetitive and keeps replacing the doubles
sampleText = sampleText.replace(/(\r\n|\n|\r)+/gm,"\r\n");

document.write('\n\nAfter:\n'+sampleText+'</pre>');

答案 2 :(得分:0)

您可以更换两个换行符:

var sampleText = "Sample1\nSample2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSample3";
sampleText = sampleText.replace(/(\n){2,}/gm, "\n"); // matches 2 linebreaks to infinity;

document.querySelector('pre').innerHTML = sampleText;
<pre></pre>

或者使用.join()创建数组时使用.split()

var sampleText = "Sample1\nSample2\n\n\n\n\n\n\n\n\n\nSample3".split(/\n{2,}/gm).join('\n')

document.querySelector('pre').innerHTML = sampleText;
<pre></pre>