replace換行 替換字符串中的換行符C#




c#空格 (12)

如果你的代碼應該運行在不同的環境中,我會考慮使用Environment.NewLine常量,因為它特別是在特定環境中使用的newline

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

但是,如果從源自另一個系統的文件中獲取文本,這可能不是正確的答案,並且應該替換為在另一個系統上使用的任何換行常數。 它通常是\n\r\n

如何在C#中的字符串中替換換行符?


Answer #1

為了確保所有可能的換行方式(Windows,Mac和Unix)被替換,您應該使用:

string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement');

並按照這個順序,當你找到線結尾字符的組合時,不要多餘的換行符。


Answer #2

最好的方法來安全地取代linebreaks

yourString.Replace("\r\n","\n") //handling windows linebreaks
.Replace("\r","\n")             //handling mac linebreaks

那應該產生一個只有\ n(例如換行符)作為換行符的字符串。 此代碼也可用於修復混合的換行符。


Answer #3

不要忘記替換不會在字符串中進行替換,但會返回一個替換字符的新字符串。 以下將刪除換行符(而不是替換它們)。 如果用別的東西代替它們,我會使用@Brian R. Bondy的方法,也許將其作為擴展方法進行包裝。 記得在調用Replace或提供的擴展方法之前先檢查空值。

string line = ...

line = line.Replace( "\r", "").Replace( "\n", "" );

作為擴展方法:

public static class StringExtensions
{
   public static string RemoveLineBreaks( this string lines )
   {
      return lines.Replace( "\r", "").Replace( "\n", "" );
   }

   public static string ReplaceLineBreaks( this string lines, string replacement )
   {
      return lines.Replace( "\r\n", replacement )
                  .Replace( "\r", replacement )
                  .Replace( "\n", replacement );
   }
}

Answer #4

我需要用實際的回車符和換行符替換\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;
}

Answer #5

使用Environment.NewLine替換Environment.NewLine

myString = myString.Replace(System.Environment.NewLine, "replacement text")

正如其他文章中提到的,如果字符串來自其他環境(OS),那麼您需要替換新的線控製字符的特定環境實現。


Answer #6

為了擴展The.Anyi.9的答案,您還應該了解一般使用不同類型的換行符 。 取決於你的文件起源地,你可能想看看確保你抓住所有的選擇......

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

應該讓你去...


Answer #7

為什麼不兼得?

string ReplacementString = "";

Regex.Replace(strin.Replace(System.Environment.NewLine, ReplacementString), @"(\r\n?|\n)", ReplacementString);

注意:用輸入字符串的名稱替換strin


Answer #8

使用.Replace()方法

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

Answer #9

當我想為字符串插入換行符時,我會使用Environment.Newline,但不要從字符串中刪除所有換行符。

根據您的平台,您可以擁有不同類型的換行符,但即使在同一個平台內,也會使用不同類型的換行符。 特別是在處理文件格式和協議時。

string ReplaceNewlines(string blockOfText, string replaceWith)
{
    return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
}

Answer #10
string s = Regex.Replace(source_string, "\n", "\r\n");

要么

string s = Regex.Replace(source_string, "\r\n", "\n");

取決於你想走哪條路。

希望它有幫助。


Answer #11
var answer = Regex.Replace(value, "(\n|\r)+", replacementString);




string