我在textarea中有一个文本,并使用.val()属性获取值。我想删除换行符(这是双精度空间)?
我尝试使用.replace
sampleText = sampleText.replace(/(\r\n|\n|\r)/gm,"");
但它没有给我正确的解决方案。
当我尝试.replace()
时,它会像这样做
答案 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;
答案 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>