从字符串的开头和结尾删除换行符

Jen*_*ang 51 javascript regex

我注意到trim()不会从字符串的开头和结尾删除新的行字符,所以我试图使用以下正则表达式完成此操作:

return str.replace(/^\s\n+|\s\n+$/g,'');
Run Code Online (Sandbox Code Playgroud)

这并没有删除新的线条,我担心我不在这里.

编辑 字符串是用这样的ejs生成的

go = ejs.render(data, { 
    locals: { 
        format() {
            // 
        }
    } 
});
Run Code Online (Sandbox Code Playgroud)

这就是现在的情况,但之前有一些空行.当我使用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>
Run Code Online (Sandbox Code Playgroud)

hoh*_*ner 84

试试这个:

str = str.replace(/^\s+|\s+$/g, '');
Run Code Online (Sandbox Code Playgroud)

jsFiddle在这里.

  • 我解决了它从这个答案改为`str.replace(/ ^ \n | \n $/g,'');` (6认同)
  • 上面的例子有一个错误。这应该有效: `str.replace(/(^\s*(?!.+)\n+)|(\n+\s+(?!.+)$)/g, "")` (3认同)

Ben*_*ane 33

String.trim()确实删除了换行符(和所有其他空格).也许它不习惯?这绝对是在写作时.从链接文档(重点添加):

trim()方法从字符串的两端删除空格.此上下文中的空格是所有空白字符(空格,制表符,不间断空格等)和所有行终止符(LF,CR等).


如果要修剪所有换行以及其他可能的空格,可以使用以下内容:

return str.trim();
Run Code Online (Sandbox Code Playgroud)

如果你想修剪换行符,您可以使用专门针对新行的解决方案.

  • @SpencerO'Reilly 这是真的,但问题的目标是除了他们成功删除的其他空白之外还删除换行符。仅删除换行符也可能有帮助,但这不是这个问题的答案 (2认同)

Ber*_*rgi 6

/^\s+|\s+$/g应该抓住任何东西。您当前的正则表达式可能存在以下问题:如果您的换行符包含\r字符,它们将无法匹配。