如何删除字符串末尾的换行符?我可以使用RegEx或string.indexOf()。
到目前为止我所做的不起作用:
var message = "first paragraph.\n\nNext paragraph.\n";
var trimMessage = message.lastIndexOf("\n")==0 ? message.substring(0, message.length-2) : message;
答案 0 :(得分:5)
正规救援:
var trimMessage = message.replace(/\n$/, '');
$
表示"输入结束。"
示例:
var message = "first paragraph.\n\nNext paragraph.\n";
var trimMessage = message.replace(/\n$/, '');
var pre = document.createElement('pre');
pre.innerHTML =
"Message:\n***" + message + "**\n\ntrimMessage = ***\n" + trimMessage + "***";
document.body.appendChild(pre);

您在示例中使用-2
会让我觉得您可能正在处理\r\n
换行符,有时可能会遇到\n
,有时候会\r\n
。或者,如果您要及时返回,只需\r
(旧的Mac OS,在BSD分叉之前)。要处理所有,可以使用字符类和+
含义"一个或多个":
var trimMessage = message.replace(/[\r\n]+$/, '');
答案 1 :(得分:1)
我自己喜欢正则表达式:
var t = message.replace(/[\r|\n|\r\n]$/, '');
在这种情况下,它会捕获所有三种形式的EOL,这是我习惯性的。
答案 2 :(得分:1)
这是一个Javascript解决方案。
如果换行符位于字符串的开头,而不是结尾处,则代码正在测试。
var trimMessage = message.length && message.charAt(message.length-1) == "\n" ? message.slice(0, -1) : message;
如果字符串为空,则开头的message.length
测试会阻止尝试访问否定位置。
答案 3 :(得分:0)
正则表达式很好,但是很难搞砸,你可以用更简单的JS做同样的事情。
如果您知道字符串末尾有换行符:
var foo = "hello, world\n";
var bar = foo.substring(0, foo.length-1);
或者只使用indexOf:
var foo = "hello, world\n";
var bar = (foo.indexOf("\n") != -1) ? foo.substring(0, foo.indexOf("\n")) : foo;