检查下面的代码。我正在尝试找到\\
并替换为\
单反斜杠,但似乎Replace()
方法无法做到这一点。我在test2
变量上得到了相同的结果。
我该如何解决?
string test1 = "C:\\Users\\lik\\Desktop\\foo\\BacklogExcelGenerator\\bin\\Debug\\foo.xlsx";
string test2 = test1.Replace("\\", @"\");
答案 0 :(得分:1)
\
用作字符串中的转义字符。转义字符用于对字符串内的特殊“非打印”字符进行编码,例如\n
是换行符\"
是引号等。因为\
是转义字符,为了编写一个\
我们必须对其进行转义并将其写为\\
,这在代码中显示为双斜杠,并且如果您在调试器中查看该字符串,但同时在内存中以及将其打印到屏幕上时都将出现为1。
例如
string s = "The quick \"brown\" fox jumped\nOver the lazy dog. \\\\o_o//";
将在屏幕上打印为
The quick "brown" fox jumped
Over the lazy dog.\\o_o//
在escape sequences上读一些书就很容易
由@""
用C#编写的逐字字符串将所有内容视为文字且不包含转义字符,如果要换行,则必须在两行上编写该字符串。您可以在逐字字符串中进行的唯一转义是"
,这是由""
string s = @"The quick ""brown"" fox jumped
Over the lazy dog. \\o_o/";
将与上面的转义字符串具有相同的输出
The quick "brown" fox jumped
Over the lazy dog.\\o_o//
答案 1 :(得分:0)
"\\"
和@"\"
是相等的字符串,包含斜杠'\'
。因此,您的方法将'\'
替换为'\'
。
\
是一个特殊字符,用于声明其他一些值,例如\n
-换行符,\t
-制表符等等。单斜杠写为\\
。
在文章Escape Sequences中了解更多信息。
答案 2 :(得分:0)
您在\\
中缺少要替换的@,请记住\
是转义字符,因此您只要求编译器加一个小节
最后,您应该有这样的东西来代替双杠
string test2 = test1.Replace(@"\\", @"\");
这样,您将表明\\
也是文字