【问题标题】:Removing carriage return and new-line from the end of a string in c#从 C# 中的字符串末尾删除回车符和换行符
【发布时间】:2010-10-26 18:15:27
【问题描述】:

如何从字符串末尾删除回车符(\r) 和换行符(\n)

【问题讨论】:

    标签: c# string newline carriage-return


    【解决方案1】:

    这将从s 的末尾删除任何回车符和换行符的组合:

    s = s.TrimEnd(new char[] { '\r', '\n' });
    

    编辑:或者正如 JP 好心指出的那样,您可以更简洁地拼写为:

    s = s.TrimEnd('\r', '\n');
    

    【讨论】:

    • 请注意 TrimEnd 声明中的 params 关键字,它可以让您传递一个字符的多个实例而不是数组。 msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx
    • 这个怎么样:s = s.TrimEnd(System.Environment.NewLine.ToCharArray());
    • 自 v1.0 发布(10 年前)以来,我一直在编写 c#。现在你告诉我关于 TrimEnd。哇!
    • 只是出于兴趣,您真正需要的是 s = s.TrimEnd() - 正如文档所说:如果 trimChars 为 null 或空数组,则改为删除 Unicode 空白字符。 i> - 见String.TrimEnd
    • @StuartWood:...这不是 Avik 所要求的。他专门询问了'\r''\n',仅此而已,而不是空格字符' '
    【解决方案2】:

    这应该可以工作...

    var tst = "12345\n\n\r\n\r\r";
    var res = tst.TrimEnd( '\r', '\n' );
    

    【讨论】:

      【解决方案3】:

      如果您使用多个平台,则使用此方法会更安全。

      value.TrimEnd(System.Environment.NewLine.ToCharArray());
      

      它将考虑不同的换行符和回车符。

      【讨论】:

      • JP 的方法 -- tst.TrimEnd( '\r', '\n' ) -- 在实践中相当“安全”,因为主要的 EOL [当前] 只是 \r\n 的不同组合,但 alexw 是“正确的”回答。 让 CLR 告诉您此平台的换行符中有哪些字符。 EOL hasn't always been combos of 0Ds and 0As
      • 我曾经使用Environment.NewLine,但它似乎无法处理在没有\n 的情况下存在\r 的情况。 TrimEnd('r','\n') 在这种情况下似乎更可靠。
      • 可能这其实是跨平台的问题,dec需要专门去掉这两个\r\n,不管系统环境怎么说。
      【解决方案4】:
      String temp = s.Replace("\r\n","").Trim();
      

      s 是原始字符串。 (注意大写)

      【讨论】:

      • 这也将:1)从字符串中间删除 \r\n,2)从字符串开头删除所有空白字符,以及 3)从末尾删除所有空白字符字符串。
      • 没错,我假设最后只有一个 /r/n。原帖中没有提到。我不确定是否需要 -1 票
      • 正是我想要的。谢谢。
      • TrimEnd() 可以单独完成工作时,使用replace() 然后trim() 并不过分,还是我错过了什么?
      • 很好的建议@MattBaker
      【解决方案5】:
      s.TrimEnd();
      

      以上是我从字符串末尾删除 '\r\n' 所需的全部内容。

      赞成的答案对我来说似乎是错误的。首先,当我尝试时它不起作用,其次,如果它确实起作用,我希望 s.TrimEnd('\r', '\n') 只会删除 either a '\r ' 或 '\n',所以我必须在我的字符串上运行两次 - 一次是在 '\n' 结束时,第二次是在 '\r' 结束时(现在'\n' 已被删除)。

      【讨论】:

      • 这确实可以删除 \r 和 \n 但也会删除所有空白,因此在某些情况下可能会走得太远。请注意此方法的文档:“如果 trimChars 为 null 或空数组,则改为删除 Unicode 空白字符。”
      【解决方案6】:

      如果总是有一个 CRLF,那么:

      myString = myString.Substring(0, myString.Length - 2);
      

      如果它可能有也可能没有,那么:

      Regex re = new Regex("\r\n$");
      re.Replace(myString, "");
      

      这两个(按设计)最多将删除一个 CRLF。缓存正则表达式以提高性能。

      【讨论】:

        【解决方案7】:

        对于我们 VBers:

        TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})
        

        【讨论】:

          【解决方案8】:
          string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!";
          k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " ");
          

          【讨论】:

            【解决方案9】:

            这太容易了——对我来说,我正在过滤掉某些电子邮件项目。我正在编写自己的自定义电子邮件垃圾过滤器。在字符串中使用 \r 和/或 \n 时,它会清除所有项目而不是过滤。

            所以,我只是做了 filter = filter.Remove('\n') 和 filter = filter.Remove('\r')。我正在制作我的过滤器,以便最终用户可以使用记事本直接编辑文件,因此不知道这些字符可能在哪里嵌入——可能不是在字符串的开头或结尾。所以删除它们就可以了。

            其他条目都可以工作,但删除可能是最简单的?

            我从这篇文章中学到了更多关于 Regex 的知识——在这里使用它非常酷。

            【讨论】:

            • 看起来你可以只做filter = filter.Remove('\n').Remove('\r');
            【解决方案10】:

            我使用了很多擦除级别

            String donen = "lots of stupid whitespaces and new lines and others..."
            
            //Remove multilines
            donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
            //remove multi whitespaces
            RegexOptions options = RegexOptions.None;
            Regex regex = new Regex("[ ]{2,}", options);
            donen = regex.Replace(donen, " ");
            //remove tabs
            char tab = '\u0009';
            donen = donen.Replace(tab.ToString(), "");
            //remove endoffile newlines
            donen = donen.TrimEnd('\r', '\n');
            //to be sure erase new lines again from another perspective
            donen.Replace(Environment.NewLine, "");
            

            现在我们有一个干净的一排

            【讨论】:

              【解决方案11】:

              这就是我必须为我工作的。

              s.Replace("\r","").Replace("\n","")
              

              【讨论】:

                【解决方案12】:
                varName.replace(/[\r\n]/mg, '')                                              
                

                【讨论】:

                  猜你喜欢
                  • 2011-03-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-12-11
                  • 1970-01-01
                  相关资源
                  最近更新 更多