用\替换\

时间:2010-08-11 11:21:32

标签: c# replace

我有一个字符串。我想搜索一个斜杠,然后用“\”(双斜杠)替换“\”(单斜杠)。

string Method1(string s) 
{
     string upadtedString = s;
     if (s.Contains("\\"))
     {
      //do nothing
     }
     else if(s.Contains("\"))
     {
          string s1 = "\";
          string s2 = "\\";
          upadtedString.Replace(s1,s2);
          s = upadtedString;
     }
     return s;
 } 

`

4 个答案:

答案 0 :(得分:7)

您需要转义反斜杠或使用逐字字符串文字,并且还要了解字符串是不可变的 - Replace不会更改现有的字符串,它会返回 new string:

// Escaping with an extra backslash
updatedString = s.Replace("\\", "\\\\");

// Using a verbatim string literal
updatedString = s.Replace(@"\", @"\\");

有关转义和逐字字符串文字的详细信息,请参阅我的strings article

答案 1 :(得分:3)

您需要在字符串文字前面使用@字符,以确保它们被视为 verbatim 字符串,并且您的斜杠不会被解释为转义字符。您还可以“转义”\字符,但使用其他\

例如:

string s1 = @"\";
string s2 = @"\\";
string s3 = updatedString.Replace(s1,s2);

string s1 = "\\";
string s2 = "\\\\";
string s3 = updatedString.Replace(s1,s2);

答案 2 :(得分:1)

您需要转义反斜杠或使用字符串文字,因此请尝试:

string Method1(string s) 
{
    return s.Replace(@"\", @"\\");
}

string Method1(string s) 
{
    return s.Replace("\\", "\\\\");
}

您的代码还存在其他问题 - 您可以在声明变量时初始化变量:

string upadtedString = s;

如果找不到Replace\方法不会改变任何内容,因此不需要if (s.Contains("\"))

字符串是不可变的(请勿更改),因此您需要使用string replaced = original.Replace(...);而不是期望orginal.Replace(...)更改original

您可以直接在方法调用中声明字符串,而不是使用s1s2

答案 3 :(得分:0)

string Method1(string s) 
{
    return s.Replace(@"\", @"\\");
}