c#字符串替换为反斜杠小车?
我有以下字符串:c#字符串替换为反斜杠小车?,c#,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
"\\\\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"
为什么
谢谢大家 我猜您正在调试器中检查结果字符串。此字符串将被转义,即TAB为\t,return为\n。通过单击值旁边的放大镜图标,可以检查“真实”值
另外,对终端进行打印(例如,
System.Console.WriteLine()
)将显示“正确”的值。我猜您正在调试器中检查结果字符串。此字符串将被转义,即TAB为\t,return为\n。通过单击值旁边的放大镜图标,可以检查“真实”值
此外,对终端进行打印(例如,System.Console.WriteLine()
)将显示“正确”值
我试过上面的代码,效果很好
我试过上面的代码,效果很好 我猜你在调试器中查找,这就是为什么会出现这种行为 每个
\
实际上是一个\
。这就是为什么将\\\\\
替换为\\\
(两个“\”替换为一个)
因为\
实际上只有一个“\”,所以在替换之后仍然会得到“\”(因为它没有找到两个“\”字符串)
原因是\character标记了一个特殊的字符,例如,如果您想使用tab(\t)字符,那么新行的字符串“\t”
”\r\n“。
所以,当你真的想在一个字符串中包含一个“\”字符时,你可以在它前面加上一个“\”字符,就像“\”
这意味着当您在调试器中看到“\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”时,实际字符串是“\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”
因此,fileToConvert.Replace(@“\\”,@“\”)
将使其看起来像这样:
“\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”
您将在调试器中看到它作为“\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231\u 1723221348.vox”
结论:
您不需要做任何事情-甚至不需要
fileToConvert.Replace(@“\\”,@“\”
,因为您的原始字符串(您在调试中看到的是\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231\u 1723221348.vox“)实际上是“\\AAA.AA.AA\d$\ivr\vm\2012May\10231\u 1723221348.vox”
我想您应该查看调试器,这就是为什么会出现这种行为
每个\\
实际上是一个\
。这就是为什么将\\\\\
替换为\\
(两个“\”替换为一个)
因为\
实际上只有一个“\”,所以在替换之后仍然会得到“\”(因为它没有找到两个“\”字符串)
原因是\character标记了一个特殊的字符,例如,如果您想使用tab(\t)字符,那么新行的字符串“\t”
”\r\n“。
所以,当你真的想在一个字符串中包含一个“\”字符时,你可以在它前面加上一个“\”字符,就像“\”
这意味着当您在调试器中看到“\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”时,实际字符串是“\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”
因此,fileToConvert.Replace(@“\\”,@“\”)
将使其看起来像这样:
“\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”
您将在调试器中看到它作为“\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231\u 1723221348.vox”
结论:
您不需要做任何事情-甚至不需要
fileToConvert.Replace(@“\\”,@“\”
,因为您的原始字符串(您在调试中看到的是\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231\u 1723221348.vox“)实际上是“\\AAA.AA.AA\d$\ivr\vm\2012May\10231\u 1723221348.vox”
您的输入和输出字符串是逐字逐句的字符串吗?它们看起来不是那样。您的替换项按预期工作。当您使用控制台时,结果如何。Writeline(您的第一个字符串);
?您就是这样得到结果的吗?@dash:您应该找个时间来看看:)您的输入和输出字符串是逐字逐句的字符串吗?它们看起来不是这样。您的替换项按预期工作。当您使用控制台时,结果是什么?Writeline(您的第一个字符串);
?您就是这样得到结果的吗?@dash:您应该找个时间来看看:)这里的源字符串是@
verbatim。那么我如何看到真正的值呢?对@HarHaHu-如果您使用Quick Watch,然后单击放大镜并选择“文本可视化工具”,您将看到正确的文本值。这里的源字符串是@
逐字。那么我如何看到真实值?对@HarHaHu-如果您使用Quick Watch,然后单击放大镜并选择“文本可视化器”,您将看到正确的文本值。您应该保留原来的字符串,实际上是“\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”-您不必做任何事情(您甚至不应该使用替换(@“\\”,@“\”)
)您应该保留原来的字符串,实际上是“\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231\u 1723221348.vox”-您不必做任何事情(您甚至不应该使用替换(@“\\”,@“\”
)
string s = @"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox";
var output = s.Replace(@"\\",@"\");