使用C#删除换行符

Dot*_*row 10 .net c# string c#-3.0 c#-4.0

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


物品标题

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


如何删除换行符.我尝试了以下功能,但它无法正常工作:

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

请建议解决方案.

此致,Asif Hameed

Ani*_*Ani 19

主要原因是您使用的是逐字字符串文字(前缀为@),并以文字结尾\.其结果是,Replace最终将寻求替换的字符序列\,r,\,n,\而不是新的行.

这应该解决它:

string result = comments.Replace("\r\n", ""); // Not idiomatic
Run Code Online (Sandbox Code Playgroud)

但更惯用(和便携)将是:

string result = comments.Replace(Environment.NewLine, "");
Run Code Online (Sandbox Code Playgroud)

(编辑:当然这假设写入数据库的系统使用与从中读取的系统相同的新行约定,或者翻译是透明的.如果不是这样,那么你当然会更好使用您希望用来表示换行符的实际字符序列.)

顺便说一下,你似乎正试图摆脱所有的空白字符.

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

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

  • +1用于巧妙地使用Split和Concat删除所有空格 (2认同)

Den*_*els 8

你尝试过使用正则表达式吗?他们非常善于处理这些类型的任务

result = Regex.Replace(result, @"\r\n?|\n", " ");
Run Code Online (Sandbox Code Playgroud)