maz*_*lix 6 javascript regex jquery
如何\n
用一个替换多个?因此,如果用户输入
blah
blahdy blah
blah blah
Run Code Online (Sandbox Code Playgroud)
我希望它最终看起来像.
blah
blahdy blah
blah blah
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用while()循环,但宁愿使用正则表达式,因为我相信它更有效.
Dan*_*Tao 13
这对我有用:
string = string.replace(/\n+/g, '\n');
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,它只用一个替换一个或多个连续换行符(\n+
)的每次出现.
g
"全局"替换的效果,意味着它替换字符串中的所有匹配而不是第一个匹配.
编辑:如果您还想考虑其他操作系统的行结束样式(例如\r\n
),您可以执行多步替换:
string = string.replace(/(\r\n)+/g, '\r\n') // for Windows
.replace(/\r+/g, '\r') // for Mac OS 9 and prior
.replace(/\n+/g, '\n'); // for everything else
Run Code Online (Sandbox Code Playgroud)
或者(感谢Renesis的这个想法):
string = string.replace(/(\r\n|\r|\n)+/g, '$1');
Run Code Online (Sandbox Code Playgroud)
如果你事先知道你正在处理什么样的文本,上面的内容可能有点过分,因为它带来明显的性能成本.
只需使用字符类替换一个或多个\n
或\r
单个\n
:
var newString = oldString.replace(/[\n\r]+/g, "\n");
Run Code Online (Sandbox Code Playgroud)
测试HTML:
<script>
function process(id) {
var oldString = document.getElementById(id).value;
var newString = oldString.replace(/[\n\r]+/g, "\n");
return newString;
}
</script>
<textarea id="test"></textarea>
<button onclick="alert(process('test'));">Test</button>
Run Code Online (Sandbox Code Playgroud)
请注意:在现代网络和大多数现代应用程序中,\n
优雅地处理单行结尾,这就是为什么我在这里使用它作为我的替换字符串.但是,CR + LF(\r\n
)操作系统上的一些更原始的应用程序将显示所有文本在没有完整的\r\n
情况下一起运行,在这种情况下,您可以使用Dan Tao的答案,该答案提供了保留行结尾的解决方案,或者以下内容,它们实现了一次通话中的类似事情:
string.replace(/(\r\n|\r|\n)+/g, "$1");
Run Code Online (Sandbox Code Playgroud)