簡體   English   中英

刪除字符串文字的格式

[英]Remove formatting on string literal

鑒於c#代碼:

string foo = @"
           abcde
           fghijk";

我試圖刪除所有格式,包括行之間的空格。

到目前為止的代碼

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

可以工作,但第2行和第3行之間的空白仍然保留。

我假設正則表達式是唯一的解決方案?

謝謝。

我假設你想保留多行,如果沒有,我會選擇CAbbott答案

var fooNoWhiteSpace = string.Join(
    Environment.NewLine,
    foo.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
       .Select(fooline => fooline.Trim())
);
  1. 這是什么把它分成線( foo.Split ),
  2. 從每行的開頭和結尾修剪空格(.Select(fooline => fooline.Trim() )),
  3. 然后將它們組合在一起,並在中間添加一個新行( string.Join )。

您可以使用正則表達式:

foo = Regex.Replace(foo, @"\s+", "");

這個怎么樣?

string input = @" 
           abcde 
           fghijk"; 
string output = "";
string[] parts = input.Split('\n');

foreach (var part in parts)
{
    // If you want everything on one line... else just + "\n" to it
    output += part.Trim();
}

這應該刪除everthing。

我寫了類似於George Duckett的東西,但是把我的邏輯放到字符串擴展方法中,以便其他人更容易閱讀/使用:

public static class Extensions
{
    public static string RemoveTabbing(this string fmt)
    {
        return string.Join(
            System.Environment.NewLine,
            fmt.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                .Select(fooline => fooline.Trim()));
    }
}

你可以這樣稱呼它:

string foo = @"
       abcde
       fghijk".RemoveTabbing();

我希望能有所幫助

如果空格是所有空格,則可以使用

foo.Replace(" ", "");

對於可能存在於其中的任何其他空白,請執行相同的操作。 例:

foo.Replace("\t", "");

只需添加一個Replace(" ", "")你處理一個字符串文字,這意味着所有的空格都是字符串的一部分。

嘗試這樣的事情:

string test = @"
            abcde
            fghijk";    

編輯 :添加代碼只過濾掉空格。

string newString = new string(test.Where(c => Char.IsWhiteSpace(c) == false).ToArray());

產生以下內容:abcdefghijk

暫無
暫無

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

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