0

我有以下字符串:

 "\\\\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"

为什么?!?

谢谢大家!

4

3 回答 3

4

我猜你正在调试器中检查结果字符串。这个字符串将被转义,即TAB 是\t,return 是\n。可以通过单击值旁边的放大镜图标来检查“真实”值。

此外,打印到终端(例如System.Console.WriteLine())将显示“正确”的值。

于 2012-06-25T20:51:00.527 回答
2

我猜你查看调试器,这就是你得到这种行为的原因......

每个\\实际上都是一个\。这就是为什么你被\\\\替换为\\(两个“\”被一个替换)并且因为\\实际上只有一个“\”你仍然在替换后得到“\”(因为它没有找到两个“\”字符串

原因是 \ 字符标记了一个特殊字符,例如,如果您想要制表符 (\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"

于 2012-06-25T20:53:20.160 回答
0
    string s = @"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox";
    var output = s.Replace(@"\\",@"\");

我尝试了上面的代码代码,它工作正常。

于 2012-06-25T20:53:19.357 回答