我是c#的新手,并尝试将下面的代码转换为c#,但在c#中找不到任何api。
相当于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;
}
答案 0 :(得分:1)
您可以使用
boot2docker ip
这将返回所有匹配项。每个匹配都是Match类型的对象,它具有一个Index属性,可用于计算第一个和最后一个匹配。
对于group(),您可以使用相同的集合来迭代不同的匹配。