如何在c#中替换字符串中的换行符?


当前回答

扩展The.Anyi。9的答案,你也应该知道一般使用的不同类型的换行符。根据文件的来源,您可能希望确保捕获所有替代选项…

string replaceWith = "";
string removedBreaks = Line.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);

应该能让你继续…

其他回答

使用.Replace()方法

Line.Replace("\n", "whatever you want to replace with");

如果您的代码应该在不同的环境中运行,我会考虑使用Environment。NewLine常量,因为它是特定环境中使用的换行符。

line = line.Replace(Environment.NewLine, "newLineReplacement");

但是,如果您从另一个系统上的文件中获取文本,这可能不是正确的答案,您应该替换为在另一个系统上使用的任何换行常数。它通常是\n或\r\n。

到目前为止发布的解决方案要么只替代Environment。如果替换字符串包含换行符,则会失败,因为它们调用string。多次替换。

下面是一个解决方案,它使用正则表达式在一次字符串传递中完成所有三个替换。这意味着替换字符串可以安全地包含换行符。

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

如果你想“清除”新行,flamebaud注释使用regex @“[\r\n]+”是最好的选择。

using System;
using System.Text.RegularExpressions;

class MainClass {
  public static void Main (string[] args) {
    string str = "AAA\r\nBBB\r\n\r\n\r\nCCC\r\r\rDDD\n\n\nEEE";

    Console.WriteLine (str.Replace(System.Environment.NewLine, "-"));
    /* Result:
    AAA
    -BBB
    -
    -
    -CCC


    DDD---EEE
    */
    Console.WriteLine (Regex.Replace(str, @"\r\n?|\n", "-"));
    // Result:
    // AAA-BBB---CCC---DDD---EEE

    Console.WriteLine (Regex.Replace(str, @"[\r\n]+", "-"));
    // Result:
    // AAA-BBB-CCC-DDD-EEE
  }
}

我需要将\r\n替换为实际的回车和换行,并将\t替换为实际的制表符。所以我想到了以下几点:

public string Transform(string data)
{
    string result = data;
    char cr = (char)13;
    char lf = (char)10;
    char tab = (char)9;

    result = result.Replace("\\r", cr.ToString());
    result = result.Replace("\\n", lf.ToString());
    result = result.Replace("\\t", tab.ToString());

    return result;
}