gpt4 book ai didi

c# - 试图将这行 Java 理解为 C# 代码

转载 作者:搜寻专家 更新时间:2023-11-01 03:29:32 25 4
gpt4 key购买 nike

查看此 java 代码:-

s = s.replaceAll( "\\\\", "\\\\\\\\").replaceAll( "\\$", "\\\\\\$");

我有点不明白。这是一个替换所有的正则表达式。

我尝试了以下 C# 代码...

text = text.RegexReplace("\\\\", "\\\\\\\\");
text = text.RegexReplace("\\$", "\\\\\\$");

但是如果我有以下单元测试:-

} ul[id$=foo] 标签:悬停 {

java代码返回:} ul[id\$=foo] label:hover {

我的 C# 代码返回:} ul[id\\\$=foo] label:hover {

所以我不确定我是否理解为什么我的 C# 代码要放入更多的 \,主要是关于如何表示这些控制字符。??


更新:

所以,当我使用 XXX 的想法时,只使用 text.Replace(..),这是可行的。例如。

text = text.Replace("\\\\", "\\\\\\\\");
text = text.Replace("\\$", "\\\\\\$");

但我希望坚持使用 RegEx... 尝试让它尽可能接近 java 代码。

正在使用的扩展方法是...

public static string RegexReplace(this string input, 
string pattern,
string replacement)
{
return Regex.Replace(input, pattern, replacement);
}

嗯...

最佳答案

Java 需要在其替换字符串中转义所有 $ 符号 - "\\\\\\$" 表示 \\\$。没有它它会抛出一个错误:http://www.regular-expressions.info/refreplace.html (寻找“$(未转义的美元作为文字文本)”)。

请记住 $1$0 等用捕获的组替换文本,因此 replaceAll 的第二个参数有部分语法>。 C# 的语法略有不同,不需要额外的斜杠,它是按字面意思来的。

你可以这样写:

text = text.RegexReplace(@"\\", @"\\");
text = text.RegexReplace(@"\$", @"\$");

或者,

text = text.RegexReplace(@"[$\\]", @"\$&");

关于c# - 试图将这行 Java 理解为 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com