I noticed that trim() does not remove new line characters from the start and end of a string, so I am trying to accomplish this with the following regex:
我注意到trim()没有从字符串的开始和结束处删除新的行字符,因此我正在尝试使用以下regex来实现这一点:
return str.replace(/^\s\n+|\s\n+$/g,'');
This does not remove the new lines, and I fear I am out of my depth here.
这并不能移除新的线条,我担心我已经超出了我的能力范围。
EDIT The string is being generated with ejs like so
像这样使用ejb生成字符串
go = ejs.render(data, {
locals: {
format() {
//
}
}
});
And this is what go is, but with a few empty lines before. When I use go.trim() I still get the new lines before.
这就是go的意思,但是前面有一些空行。当我使用go.trim()时,我以前仍然会得到新的线条。
<?xml version="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="Out" page-width="8.5in" page-height="11in" margin-top="1in" margin-bottom="0.5in" margin-left="0.75in" margin-right="0.75in">
<fo:region-body margin-top="1in" margin-bottom="0.25in"/>
<fo:region-before extent="1in"/>
<fo:region-after extent="0.25in"/>
<fo:region-start extent="0in"/>
<fo:region-end extent="0in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="Out" initial-page-number="1" force-page-count="no-force">
<fo:static-content flow-name="xsl-region-before">
<fo:block font-size="14pt" text-align="center">ONLINE APPLICATION FOR SUMMARY ADVICE</fo:block>
<fo:block font-size="13pt" font-weight="bold" text-align="center">Re:
SDF, SDF
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body" font="10pt Helvetica">
.. removed this content
</fo:flow>
</fo:page-sequence>
</fo:root>
3 个解决方案
#2
8
String.trim() does in fact remove newlines (and all other whitespace). Maybe it didn't used to? It definitely does at the time of writing. From the linked documentation (emphasis added):
String.trim()实际上删除了换行(以及所有其他空白)。也许它不习惯?在写作的时候确实是这样。从链接文档(重点补充):
The trim() method removes whitespace from both ends of a string. Whitespace in this context is all the whitespace characters (space, tab, no-break space, etc.) and all the line terminator characters (LF, CR, etc.).
trim()方法从字符串的两端删除空白。在这个上下文中,空格是所有的空格字符(空格、制表符、不间断空格等)和所有的行结束符(LF、CR等)。
If you want to trim all newlines plus other potential whitespace, you can use the following:
如果您想要删除所有的新行以及其他潜在的空格,您可以使用以下内容:
return str.trim();
If you want to only trim newlines, you can use a solution that targets newlines specifically.
如果您只想修剪换行,您可以使用一个专门针对新行的解决方案。
#3
4
/^\s+|\s+$/g
should catch anything. Your current regex may have the problem that if your linebreaks contain \r
characters they wouldn't be matched.
/ ^ \ s + | \ s + $ / g应该抓住任何东西。您当前的regex可能有这样的问题:如果您的换行符包含\r字符,那么它们将不会被匹配。
#1
#2
8
String.trim() does in fact remove newlines (and all other whitespace). Maybe it didn't used to? It definitely does at the time of writing. From the linked documentation (emphasis added):
String.trim()实际上删除了换行(以及所有其他空白)。也许它不习惯?在写作的时候确实是这样。从链接文档(重点补充):
The trim() method removes whitespace from both ends of a string. Whitespace in this context is all the whitespace characters (space, tab, no-break space, etc.) and all the line terminator characters (LF, CR, etc.).
trim()方法从字符串的两端删除空白。在这个上下文中,空格是所有的空格字符(空格、制表符、不间断空格等)和所有的行结束符(LF、CR等)。
If you want to trim all newlines plus other potential whitespace, you can use the following:
如果您想要删除所有的新行以及其他潜在的空格,您可以使用以下内容:
return str.trim();
If you want to only trim newlines, you can use a solution that targets newlines specifically.
如果您只想修剪换行,您可以使用一个专门针对新行的解决方案。
#3
4
/^\s+|\s+$/g
should catch anything. Your current regex may have the problem that if your linebreaks contain \r
characters they wouldn't be matched.
/ ^ \ s + | \ s + $ / g应该抓住任何东西。您当前的regex可能有这样的问题:如果您的换行符包含\r字符,那么它们将不会被匹配。