我有一个像这样的文件:
const stringToTest = ' test1\n test2\n test3\n \n \n'
我想得到的输出是:
stringTransformed = 'test1\n test2\n test3\n \n'
所以换句话说,我想摆脱最后的空白和换行:
' \n'
我尝试了以下方法:
stringToTest.replace(/\s+\n$/, '')
但会删除文件末尾的所有空白和换行符。
我知道我可以使用split and join来做到这一点,但我更喜欢使用正则表达式来完成它,因为它速度更快,有时我的字符串很大,因此我不想将它们拆分为数组。
最佳答案
您的\s
模式匹配任何空格。如果从中减去CR和LF符号,则只会匹配水平空白。
因此,您可以使用
replace(/[^\S\n\r]*\n$/, '')
或者,也可以处理CRLF结尾:
replace(/[^\S\n\r]*\r?\n$/, '')
请注意,如果在最后一个换行符之前的行中没有水平空格字符,我将
+
更改为*
量也可以删除最后一个换行符。JS演示:
const stringToTest = ' test1\n test2\n test3\n \n \n';
console.log(stringToTest.replace(/[^\S\n\r]*\n$/, ''));