如何从字符串中删除换行符?

Ash*_*shu 155 .net c#

我有一个以下格式的字符串

string s = "This is a Test String.\n   This is a next line.\t This is a tab.\n'
Run Code Online (Sandbox Code Playgroud)

我想删除的所有事件\n,并\r从上面的字符串.

我试过string s = s.Trim(new char[] {'\n', '\r'});但它没有帮助.

Kir*_*irk 279

我喜欢使用正则表达式.在这种情况下,您可以这样做:

string replacement = Regex.Replace(s, @"\t|\n|\r", "");
Run Code Online (Sandbox Code Playgroud)

正则表达式在.NET世界中并不像动态语言那样流行,但它们提供了很多操作字符串的能力.

  • 如果在处理1M +项目的循环中使用它,请小心.正则表达式比String.Replace慢 (7认同)
  • 该代码示例还删除了制表符 \t,这是没有问题的。 (6认同)

jas*_*son 66

您想用来String.Replace删除一个角色.

s = s.Replace("\n", String.Empty);
s = s.Replace("\r", String.Empty);
s = s.Replace("\t", String.Empty);
Run Code Online (Sandbox Code Playgroud)

请注意,String.Trim(params char[] trimChars)仅从trimChars调用的实例中删除前导和尾随字符.

你可以制作一个扩展方法,避免上面制作大量临时字符串的性能问题:

static string RemoveChars(this string s, params char[] removeChars) {
    Contract.Requires<ArgumentNullException>(s != null);
    Contract.Requires<ArgumentNullException>(removeChars != null);
    var sb = new StringBuilder(s.Length);
    foreach(char c in s) { 
        if(!removeChars.Contains(c)) {
            sb.Append(c);
        }
    }
    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此方法将创建两个中间字符串对象.根据字符串的大小,这可能会产生显着的性能和内存消耗后果. (7认同)

ᴍᴀᴛ*_*ᴋᴇʀ 35

我知道这是一个旧帖子,但我想我会分享我用来删除新行字符的方法.

s.Replace(Environment.NewLine, "");
Run Code Online (Sandbox Code Playgroud)

参考文献:

MSDN String.Replace方法MSDN Environment.NewLine属性

  • 在跨环境(即从 Unix 系统获取数据的 Windows 应用程序)应用程序中,这将导致更多的问题而不是利润。 (4认同)

cdh*_*wie 13

如果速度和内存使用率很低,请执行以下操作:

var sb = new StringBuilder(s.Length);

foreach (char i in s)
    if (i != '\n' && i != '\r' && i != '\t')
        sb.Append(i);

s = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

  • "总是很好地使用StringBuilder"<我不是专业人士,但这并不完全正确.这篇[Jeff Atwood撰写的文章](http://blog.codinghorror.com/the-sad-tragedy-of-micro-optimization-theater/)提供了对字符串操作/连接以及最终优化的有趣见解. (4认同)

小智 5

就这样做

s = s.Replace("\n", String.Empty).Replace("\t", String.Empty).Replace("\r", String.Empty);
Run Code Online (Sandbox Code Playgroud)