2011-12-05 23 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); 
      } 
     }