如何删除字符串末尾的换行符?

时间:2015-12-11 00:19:17

标签: javascript actionscript-3

如何删除字符串末尾的换行符?我可以使用RegEx或string.indexOf()。

到目前为止我所做的不起作用:

var message = "first paragraph.\n\nNext paragraph.\n";
var trimMessage = message.lastIndexOf("\n")==0 ? message.substring(0, message.length-2) : message;

4 个答案:

答案 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;