[英]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
位置。
您可以直接在方法调用中声明字符串,而不是使用s1
和s2
。
string Method1(string s)
{
return s.Replace(@"\", @"\\");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.