代码之家  ›  专栏  ›  技术社区  ›  Stefano Balzarotti

将Java模式replaceAll转换为c#

  •  2
  • Stefano Balzarotti  · 技术社区  · 7 年前

    我有这个Java代码,我需要把它转换成C语言#

    private static final Pattern MISSING_PRODUCT_AT_START = Pattern.compile("^\\(( |;|null|compatible|windows|android|linux).*", Pattern.CASE_INSENSITIVE);
    

    result = MISSING_SPACE.matcher(result).replaceAll("$1 $2");
    

    第一部分可以用Regex转换为:

     private static readonly Regex MISSING_SPACE = new Regex("(/[0-9]+\\.[0-9]+)([A-Z][a-z][a-z][a-z]+ )", RegexOptions.IgnoreCase);
    

    但是关于第二部分,我不知道Java到底是什么意思 replaceAll ,我不是Java专家

    为了解释上下文,我正在将一个开源库从Java转换到.NET

    怎么能被拖走 .replaceAll("$1 $2");

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sweeper    7 年前

    通过阅读 replaceAll ,我们可以看到它这样做:

    用给定的替换字符串替换与模式匹配的输入序列的每个子序列。

    Regex.Replace 在.NET中执行:

    在指定的输入字符串中,用指定的替换字符串替换与正则表达式模式匹配的所有字符串。

    所以你可以把这句话翻译成:

    result = MISSING_SPACE.Replace(result, "$1 $2");
    

    all 在里面 替换 有点暗示它做了一些不同于 Replace replaceFirst replaceLast .