c#string替换为反斜杠车?

时间:2012-06-25 20:46:42

标签: c#

我有以下字符串:

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

为什么?!?

全部谢谢!

3 个答案:

答案 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(@"\\",@"\");

我尝试了上面的代码,它运行正常。