我有以下字符串:
"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"
我希望它看起来像:
"\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"
我试过了
fileToConvert.Replace(@"\\",@"\")
这会产生:
"\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"
为什么?!?
全部谢谢!
答案 0 :(得分:4)
我猜测你正在检查调试器中的结果字符串。该字符串将被转义,即TAB为\ t,返回为\ n。 "真实"可以通过单击值旁边的放大镜图标来检查值。
此外,对终端进行打印(例如System.Console.WriteLine()
)将显示"正确"值。
答案 1 :(得分:2)
我猜你看看调试器,这就是为什么你会出现这种行为......
每个\\
实际上是一个\
。这就是为什么你将\\\\
替换为\\
(两个“\”替换为一个)
并且因为\\
实际上只有一个“\”,你在替换后仍然会得到“\”(因为它没有找到两个“\”字符串
原因是\字符标记了一个特殊字符,例如,如果您想要tab(\ t)字符,则新行"\t"
将包含字符串"\r\n"
。
所以当你真的希望在一个字符串中有一个'\'字符时,你先用一个'\'字符标记它 - 比如"\\"
这意味着当你在调试器中看到“\\ AAA.AA.A.AA \ d $ \ ivr \ vm \ 2012May \ 29 \ 10231_1723221348.vox”时,实际的字符串是“\ AAA.AA.A” .AA \ d $ \ IVR \ VM \ 2012年5月\ 29 \ 10231_1723221348.vox“
所以fileToConvert.Replace(@"\\",@"\")
会使它看起来像这样:
"\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"
您将在调试器中看到"\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"
得出结论:
您不需要执行任何操作 - 甚至不需要fileToConvert.Replace(@"\\",@"\")
,因为您的原始字符串(您在调试中看到的"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"
)实际上是"\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"
答案 2 :(得分:0)
string s = @"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox";
var output = s.Replace(@"\\",@"\");
我尝试了上面的代码,它运行正常。