【问题标题】:Removing line breaks using C#使用 C# 删除换行符
【发布时间】:2011-12-03 05:22:54
【问题描述】:

我从名为“描述”的数据库字段中获取一个字符串,它有换行符。它看起来像这样:


项目标题

描述在这里。这是项目的描述。


如何删除换行符。我尝试了以下功能,但它不起作用:

public string FormatComments(string comments)
{
    string result = comments.Replace(@"\r\n\", "");
    result = result.Replace(" ", "");
    return result;
}

请提出解决方案。

问候, 阿西夫·哈米德

【问题讨论】:

    标签: c# .net string c#-4.0 c#-3.0


    【解决方案1】:

    主要原因是您使用verbatim string literal(以@ 开头)并以文字\ 结尾。结果是Replace 最终会寻找替换字符序列\r\n\ 而不是换行符。

    这应该可以解决它:

    string result = comments.Replace("\r\n", ""); // Not idiomatic
    

    但更惯用(和可移植)的是:

    string result = comments.Replace(Environment.NewLine, "");
    

    (编辑:这当然假设写入数据库的系统使用与从数据库读取的系统相同的换行约定,或者翻译是透明地发生的。如果不是这种情况,你当然会最好使用您希望用来表示换行符的实际字符序列。)

    顺便说一句,您似乎正试图摆脱所有个空白字符。

    在这种情况下你可以这样做:

    // Split() is a psuedo-overload that treats all whitespace
    // characters as separators.
    string result = string.Concat(comments.Split()); 
    

    【讨论】:

    • Environment.NewLine 可能因平台而异,而数据库可能不会。
    • @Gabe:很公平,我已经进行了编辑警告 OP。
    • +1 巧妙地使用 Split 和 Concat 删除所有空格
    【解决方案2】:

    您是否尝试过使用正则表达式? 他们非常擅长处理这些类型的任务

    result = Regex.Replace(result, @"\r\n?|\n", " ");
    

    【讨论】:

      【解决方案3】:

      您的问题是 @ 符号。在这种情况下没有必要。

      你想要

      comments.Replace("\r\n", "");
      

      【讨论】:

        【解决方案4】:

        对于删除所有换行符,无论环境或格式错误的字符串如何,我认为这是最简单的选择:

        var singleLineString = multilineString.Replace("\r", string.Empty).Replace("\n", string.Empty);
        

        【讨论】:

          【解决方案5】:

          使用该代码替换新行

          myString = myString.Replace(System.Environment.NewLine, "替换文本");

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-21
            • 2011-08-31
            • 1970-01-01
            相关资源
            最近更新 更多