我猜你查看调试器,这就是你得到这种行为的原因......
每个\\
实际上都是一个\
。这就是为什么你被\\\\
替换为\\
(两个“\”被一个替换)并且因为\\
实际上只有一个“\”你仍然在替换后得到“\”(因为它没有找到两个“\”字符串
原因是 \ 字符标记了一个特殊字符,例如,如果您想要制表符 (\t) 字符,您将拥有"\t"
换行符的字符串"\r\n"
。因此,当您实际上想要在字符串中包含一个 '\' 字符时,您可以在之前再用一个 '\' 字符标记它 - 比如"\\"
这意味着当您在调试器中看到“\\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"
得出一个结论:
你不需要做任何事情——甚至fileToConvert.Replace(@"\\",@"\")
因为你的原始字符串(你在 debug as 中看到的"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"
)实际上是"\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"