繁体   English   中英

奇怪的行为取代“\\”

[英]Odd behaviour replacing “\”

我有这个问题,其中有一些strnig,其中包括文字表达式"\\\\"在几个场合,我想用"\\"替换它,当我尝试用string.replace替换它时,只复制第一个发生,如果我使用正则表达式,它根本不替换它

我在线查看了一些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并将其识别为有效路径)

改变这个:

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

对此

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

问题不在于Regex.Replace参数。

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

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

  • 你的实际投入是什么?
  • 你想要的产量是多少?

您应该将其更改为以下内容

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

这似乎是预期的行为。

在String.Replace的情况下:最初,example包含一个以两个反斜杠开头的字符串,并在字符串的其他地方包含一些单个反斜杠。 然后,您尝试使用单个反斜杠替换所有出现的双反斜杠,该反斜杠工作并生成一个以单个反斜杠开头的字符串,并在字符串中的其他位置包含一些单个反斜杠。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM