2011-12-05 57 views
23

字符我有以下代碼刪除「」從串c#

string line = ""; 

while ((line = stringReader.ReadLine()) != null) 
{ 
    // split the lines 
    for (int c = 0; c < line.Length; c++) 
    { 
     if (line[c] == ',' && line[c - 1] == '"' && line[c + 1] == '"') 
     { 
      line.Trim(new char[] {'\\'}); // <------ 
      lineBreakOne = line.Substring(1, c - 2); 
      lineBreakTwo = line.Substring(c + 2, line.Length - 2); 
     } 
    } 
} 

我添加了一個評論網,我想了解一下就行了。我想從字符串中刪除所有'\'字符。這是正確的方式嗎?我不工作。所有\仍然在字符串中。

+0

'修剪(新的char [] { '\\'})'會從一開始就刪除所有\字符或結束。它「修飾」它們。正如@ user978511所述,您可以使用'Replace(「\\」,「」)''。 (僅供參考,他使用@字符表示「從字面上理解字符串,而不應用轉義規則」) – JohnL

+0

下面的解決方案都不適用於我... – rsy

+0

Regex.Unescape() – Alexander

回答

75

你可以使用:

line.Replace(@"\", ""); 

line.Replace(@"\", string.Empty); 
+2

這是因爲替換不會更改字符串本身它會返回已更改的字符串。所以你必須像我的回答那樣做,然後寫'line = line.Rep ...' –

+1

這些不是斜槓。這些是轉義字符。他們在這裏用來逃避報價。考慮使用單引號而不是雙引號。那時你就不需要斜線了。 –

+1

@PoiXen - 在你發佈的字符串中,'\「是一個讓字符串出現的轉義序列。它裏面沒有反斜槓字符。 – Oded

4

爲什麼就不能呢?

resultString = Regex.Replace(subjectString, @"\\", ""); 
+1

我認爲這需要是「\\」或@「 「不是嗎? –

+1

@BaliC其實沒有。使用一個**「\」**,您可以在模式結束時解析「\」 - 非法\。 .NET 3.5 – FailedDev

4

嘗試使用

String sOld = ...; 
String sNew =  sOld.Replace("\\", String.Empty); 
3

刪除所有 '\' 從字符串,只需做到以下幾點:

myString = myString.Replace("\\", ""); 
8

您可以使用String.Replace基本上消除所有出現

line.Replace(@"\", ""); 
2

Trim只能刪除字符串開頭和結尾的字符,這就是爲什麼你的代碼不能正常工作。您應該使用Replace代替:

line.Replace(@"\", string.Empty); 
4

嘗試更換

string result = line.Replace("\\",""); 
2
  while ((line = stringReader.ReadLine()) != null) 
     { 
      // split the lines 
      for (int c = 0; c < line.Length; c++) 
      { 
       line = line.Replace("\\", ""); 
       lineBreakOne = line.Substring(1, c - 2); 
       lineBreakTwo = line.Substring(c + 2, line.Length - 2); 
      } 
     }