簡體   English   中英

C# 中的 String.Replace(char, char) 方法

[英]String.Replace(char, char) method in C#

如何將\n替換為空白空間?

如果我這樣做,我會得到一個空的文字錯誤:

string temp = mystring.Replace('\n', '');

String.Replace('\n', '')不起作用,因為''不是有效的字符文字。

如果您使用 String.Replace(string, string) 覆蓋,它應該可以工作。

string temp = mystring.Replace("\n", "");

由於將“\n”替換為“”不會給您想要的結果,這意味着您應該替換的實際上不是“\n”,而是其他一些字符組合。

一種可能性是您應該替換的是“\r\n”字符組合,它是 Windows 系統中的換行符代碼。 如果您只替換“\n”(換行)字符,它將留下“\r”(回車)字符,這仍可能被解釋為換行符,具體取決於您顯示字符串的方式。

如果字符串的來源是系統特定的,則應使用該特定字符串,否則應使用 Environment.NewLine 獲取當前系統的換行符組合。

string temp = mystring.Replace("\r\n", string.Empty);

或者:

string temp = mystring.Replace(Environment.NewLine, string.Empty);
string temp = mystring.Replace("\n", string.Empty).Replace("\r", string.Empty);

顯然,這會同時刪除 '\n' 和 '\r' 並且就像我知道的那樣簡單。

這應該有效。

string temp = mystring.Replace("\n", "");

您確定原始字符串中有實際的 \n 新行嗎?

如果你使用

string temp = mystring.Replace("\r\n", "").Replace("\n", "");

那么你就不必擔心你的字符串來自哪里。

Bytes.com上找到:

string temp = mystring.Replace('\n', '\0');// '\0'代表一個空字符

一個警告:在 .NET 中,換行符是“\r\n”。 因此,如果您要從文件中加載文本,則可能必須使用它而不是僅使用 "\n"

編輯>正如塞繆爾在評論中指出的那樣,“\r\n”不是 .NET 特定的,而是 windows 特定的。

創建這樣的擴展方法怎么樣......

 public static string ReplaceTHAT(this string s)
 {
    return s.Replace("\n\r", "");
 }

然后當你想在任何你想要的地方替換它時,你可以這樣做。

s.ReplaceTHAT();

此致!

這是你的確切答案...

const char LineFeed = '\n'; // #10
string temp = new System.Text.RegularExpressions.Regex(
                  LineFeed
              ).Replace(mystring, string.Empty);

但是這個要好得多...特別是如果您嘗試拆分行(您也可以將其與拆分一起使用)

const char CarriageReturn = '\r'; // #13
const char LineFeed = '\n'; // #10
string temp = new System.Text.RegularExpressions.Regex(
                  string.Format("{0}?{1}", CarriageReturn, LineFeed)
              ).Replace(mystring, string.Empty);

我知道這是一篇舊帖子,但我想添加我的方法。

public static string Replace(string text, string[] toReplace, string replaceWith)
    {
        foreach (string str in toReplace)
           text = text.Replace(str, replaceWith);

        return text;
    }

示例用法:

string newText = Replace("This is an \r\n \n an example.", new string[] { "\r\n", "\n" }, "");
string temp = mystring.Replace("\n", " ");

@gnomixa - 你在評論中沒有取得任何成就是什么意思? 以下適用於我在 VS2005 中。

如果您的目標是刪除換行符,從而縮短字符串,請查看以下內容:

        string originalStringWithNewline = "12\n345"; // length is 6
        System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6);
        string newStringWithoutNewline = originalStringWithNewline.Replace("\n", ""); // new length is 5
        System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 5);

如果您的目標是用空格字符替換換行符,使字符串長度保持不變,請查看以下示例:

        string originalStringWithNewline = "12\n345"; // length is 6
        System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6);
        string newStringWithoutNewline = originalStringWithNewline.Replace("\n", " "); // new length is still 6
        System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 6);

而且您必須替換單個字符串而不是字符,因為 '' 不是要傳遞給 Replace(string,char) 的有效字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM