c#中matcher.start和matcher.end的等价物

时间:2015-07-27 12:30:24

标签: java c#

我是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;
    }
    

1 个答案:

答案 0 :(得分:1)

您可以使用

boot2docker ip

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

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