我有这个问题,其中我有几个文字表达式"\\"
以及其他东西,当我尝试用字符串替换它时,我想用"\"
替换它。替换,只重复第一次出现,如果我使用正则表达式,它根本不替换它
我在线查看了一些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并将其识别为有效路线)
答案 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案例中: 在这种情况下,示例的原始内容无关紧要。你的正则表达式模式是一个双反斜杠,当被解释为正则表达式模式时,意味着“找到一个反斜杠”。然后用一个反斜杠替换这个模式,这样就不会改变字符串。