gpt4 book ai didi

java - 等价于 c# 中的 matcher.start 和 matcher.end

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:20 27 4
gpt4 key购买 nike

我是 c# 的新手,正在尝试将以下代码转换为 c#,但在 c# 中找不到任何 api 来执行此操作。

  1. 请解释 matcher.start() 和 matcher.end() 的等价物。
  2. c# 中 matcher.group() 的等效项。

    private String getFinalVariant(String strInputWord) {

    Pattern pat = Pattern.compile("[aeiouhy]+");
    Matcher mat = pat.matcher(strInputWord);
    int lenghtOfInputWord = strInputWord.length();
    while (mat.find()) {
    if (mat.start() == 0) {

    int index = '1';
    Map<String, String> temp = ruleList[index];
    if (temp.containsKey(mat.group())) {
    strInputWord = strInputWord.replaceFirst(mat.group(), temp.get(mat.group()));
    }

    } else if (mat.end()== lenghtOfInputWord) {

    int index = '3';
    int lastIndex = strInputWord.lastIndexOf(mat.group());
    Map<String, String> temp = ruleList[index];
    if (temp.containsKey(mat.group())) {
    String tail = strInputWord.substring(lastIndex).replaceFirst(mat.group(), temp.get(mat.group()));
    strInputWord = strInputWord.substring(0, lastIndex) + tail;
    }

    } else {

    int index = '2';
    Map<String, String> temp = ruleList[index];
    String str = mat.group();
    // System.out.println(str);
    // System.out.println(mat.start());
    if (temp.containsKey(mat.group())) {
    if (strInputWord.length() > 3) {
    int index1 = strInputWord.indexOf(mat.group(), 1);
    if (index1 != 0 && index1 != strInputWord.length() - 1) {
    String matched = strInputWord.substring(index1, strInputWord.length() - 1).replaceFirst(mat.group(), temp.get(mat.group()));
    strInputWord = strInputWord.substring(0, index1) + matched + strInputWord.charAt(strInputWord.length() - 1);
    }

    } else if (strInputWord.length() == 3) {
    strInputWord = strInputWord.charAt(0) + strInputWord.substring(1, 2).replaceFirst(mat.group(), temp.get(mat.group())) + strInputWord.charAt(strInputWord.length() - 1);
    }

    }

    }

    }
    return strInputWord;
    }

最佳答案

你可以使用

var matches = Regex.Matches(yourString);

这将返回所有匹配项。每个匹配项都是一个 Match 类型的对象,它有一个 Index 属性,您可以使用它来计算第一个和最后一个匹配项。

对于 group(),您可以使用相同的集合来遍历不同的匹配项。

关于java - 等价于 c# 中的 matcher.start 和 matcher.end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653166/

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