5

我有这个问题,其中我有一个字符串,除其他外,文字表达式"\\"多次出现,我想用 替换它"\",当我尝试用 string.replace 替换它时,只替换第一次出现,如果我这样做使用正则表达式它根本不会替换它

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

string.replace

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

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

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

使用正则表达式

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

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

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

谢谢!

编辑:

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

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

过程

保存字符串的输出 变量"\\url.com\place\anotherplace\extraplace\" (因此我可以将其发送到 ffmpeg 并将其识别为有效路由)

4

4 回答 4

5

改变这个:

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

对此

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

问题不在于Regex.Replace参数。

于 2012-10-17T17:57:18.060 回答
1

您应该将其更改为以下

example = example.replace(@"\\", @"\");
于 2012-10-17T18:01:38.640 回答
1

这似乎是预期的行为。

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

在 Regex.Replace 案例中:example 的原始内容在这种情况下无关紧要。您的正则表达式模式是双反斜杠,当解释为正则表达式模式时,表示“查找单个反斜杠”。然后用一个反斜杠替换此模式,这不会导致字符串发生任何变化。

于 2012-10-17T18:09:06.950 回答
1

\\\\您的字符串中只有一次出现。所以它正在做你要求它做的事情。

不转义(即不添加额外的 /)

  • 你的实际输入是什么?
  • 你想要的输出是什么?
于 2012-10-17T17:56:02.070 回答