使用C#删除换行符

时间:2011-12-03 05:22:55

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

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


项目标题

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


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

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

请建议解决方案。

此致 Asif Hameed

5 个答案:

答案 0 :(得分:19)

主要原因是您使用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()); 

答案 1 :(得分:8)

您是否尝试过使用正则表达式? 他们非常善于处理这类任务

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

答案 2 :(得分:1)

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

你想要

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

使用该代码替换新行

myString = myString.Replace(System.Environment.NewLine,“替换文字”);