繁体   English   中英

用\\\\替换\\

[英]Replacing \ with \\

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

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;
 } 

`

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

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

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

有关转义和逐字字符串文字的更多信息,请参见我的字符串文章

您需要在字符串文字之前使用@字符,以确保将它们当作逐字字符串使用,并且将斜杠不解释为转义字符。 您还可以使用其他\\来“转义” \\字符。

例如:

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

要么

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM