奇怪的行为取代“\”

时间:2012-10-17 17:51:26

标签: c#

我有这个问题,其中我有几个文字表达式"\\"以及其他东西,当我尝试用字符串替换它时,我想用"\"替换它。替换,只重复第一次出现,如果我使用正则表达式,它根本不替换它

我在线查看了一些RegEx测试人员,据说我的代码没问题,返回我的意思,但我的代码根本不起作用

使用string.replace

example = "\\\\url.com\\place\\anotherplace\\extraplace\\";

example = example.replace("\\\\","\\");

returns example == "\\url.com\\place\\anotherplace\\extraplace\\";

使用RegEx

example = Regex.Replace(example,"\\\\","\\");

returns example = "\\\\url.com\\place\\anotherplace\\extraplace\\";

如果我使用文字是相同的情况(在替换函数参数上使用(@"\\", @"\")给出与上面相同的结果)。

谢谢!

修改

我认为我的最终目标令人困惑所以我会在这里更新,我想做的是:

输入: 包含字符串的变量:"\\\\url.com\\place\\anotherplace\\extraplace\\"

过程

输出 包含字符串"\\url.com\place\anotherplace\extraplace\"的变量 (所以我可以将它发送到ffmpeg并将其识别为有效路线)

4 个答案:

答案 0 :(得分:5)

改变这个:

example = "\\\\url.com\\place\\anotherplace\\extraplace\\"; 

到这个

example = @"\\\\url.com\\place\\anotherplace\\extraplace\\"; 

问题不是Regex.Replace参数。

答案 1 :(得分:1)

您的字符串中只出现一次\\\\。所以它完全按照你的要求去做。

没有逃避(即没有添加额外/'s)

  • 您的实际投入是什么?
  • 您想要的输出是什么?

答案 2 :(得分:1)

您应该将其更改为以下

example = example.replace(@"\\", @"\");

答案 3 :(得分:1)

这似乎是预期的行为。

在String.Replace案例中: 最初,example包含一个以两个反斜杠开头的字符串,并在字符串的其他位置包含一些单个反斜杠。然后,您尝试使用单个反斜杠替换所有出现的双反斜杠,这样可以生成一个以单个反斜杠开头的字符串,并在字符串的其他位置包含一些单个反斜杠。

在Regex.Replace案例中: 在这种情况下,示例的原始内容无关紧要。你的正则表达式模式是一个双反斜杠,当被解释为正则表达式模式时,意味着“找到一个反斜杠”。然后用一个反斜杠替换这个模式,这样就不会改变字符串。