16

如果我不知道字符串有多大,如何从字符串中删除最后一行“\n”?

var tempHTML = content.document.body.innerHTML;
var HTMLWithoutLastLine = RemoveLastLine(tempHTML);

function RemoveLastLine(tempHTML)
{
   // code
} 
4

4 回答 4

25

尝试:

if(x.lastIndexOf("\n")>0) {
    return x.substring(0, x.lastIndexOf("\n"));
} else {
    return x;
}
于 2012-11-30T14:45:41.337 回答
9

您可以使用正则表达式(根据“最后一行”的意思进行调整):

return x.replace(/\r?\n?[^\r\n]*$/, "");
于 2012-11-30T14:49:15.197 回答
3

一个正则表达式会做到这一点。这是最简单的一个:

string.replace(/\n.*$/, '')

请参阅 regex101 了解其工作原理

\n匹配字符串中的最后一个换行符

.*匹配任何字符,介于零次和无限次之间(行终止符除外)。所以无论最后一行是否有内容,这都有效

$匹配字符串的结尾

于 2017-12-20T02:25:37.070 回答
1

在您的特定情况下,该功能确实可能如下所示:

function(s){
  return i = s.lastIndexOf("\n")
    , s.substring(0, i)
}

尽管您可能也不希望最后有空格;在这种情况下,一个简单的替换可能会很好:

s.replace(/s+$/, '')

但是请记住,新版本的 Javascript(ES6+)提供了使用内置原型函数(trimtrimLefttrimRight)执行此操作的速记方法

s.trimRight()

干杯!

于 2016-07-28T19:34:57.993 回答