使用C#去除换行符

11

我从数据库字段“Description”获取了一个字符串,其中包含换行符。它看起来像这样:


项目标题

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


我该如何去掉换行符?我尝试了下面的函数但它没有起作用:

public string FormatComments(string comments)
{
    string result = comments.Replace(@"\r\n\", "");
    result = result.Replace(" ", "");
    return result;
}
请提供解决方案。
谢谢, Asif Hameed
5个回答

20
主要原因是您使用了verbatim字符串文字(以@为前缀),并以字面量\结尾。结果是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
@Gabe:好的,我已经加入了一个编辑警告来提醒原帖作者。 - Ani
2
+1 用 Split 和 Concat 巧妙地去除所有空格 - Keith

9

你是否尝试过使用正则表达式? 它们在处理这种类型的任务时非常有效

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

2

无论在什么环境下或是字符串格式不良的情况下,如果要删除所有换行符,我认为这是最简单的方法:

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

1

你的问题在于@符号。在这种情况下,它是不必要的。

你想要

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

0

使用该代码替换换行符

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接