简体   繁体   English

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

[英]Remove line breaks from start and end of string

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()不会从字符串的开头和结尾删除新的行字符,所以我试图使用以下正则表达式完成此操作:

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 编辑字符串是用这样的ejs生成的

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.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>

Try this: 试试这个:

str = str.replace(/^\s+|\s+$/g, '');

jsFiddle here . jsFiddle在这里

String.trim() does in fact remove newlines (and all other whitespace). String.trim()确实删除了换行符(和所有其他空格)。 Maybe it didn't used to? 也许它不习惯? It definitely does at the time of writing. 这绝对是在写作时。 From the linked documentation (emphasis added): 从链接文档(重点添加):

The trim() method removes whitespace from both ends of a string. trim()方法从字符串的两端删除空格。 Whitespace in this context is all the whitespace characters (space, tab, no-break space, etc.) and all the line terminator characters (LF, CR, etc.). 此上下文中的空格是所有空白字符(空格,制表符,不间断空格等) 和所有行终止符(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. 如果你只想修剪换行符,您可以使用专门针对新行的解决方案。

/^\\s+|\\s+$/g should catch anything. /^\\s+|\\s+$/g应该捕获任何东西。 Your current regex may have the problem that if your linebreaks contain \\r characters they wouldn't be matched. 您当前的正则表达式可能存在以下问题:如果您的换行符包含\\r字符,则它们将无法匹配。

试试这个:

str.split('\n').join('');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM