Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#字符串替换为反斜杠小车?_C# - Fatal编程技术网

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