指定された文字列の出現回数を取得します。
もっと読む
javaでは、指定された文字列が他の文字列に現れる回数をどうやって取得しますか?
例えば、keywordのsrTextにおける出現回数を取得しますか?
方式一:
方式二:
方式三:
javaでは、指定された文字列が他の文字列に現れる回数をどうやって取得しますか?
例えば、keywordのsrTextにおける出現回数を取得しますか?
方式一:
/**
*
* The number of occurrences of find keyword in srcText
*
* @param srcText
* @param keyword
* @return
*/
public static int findStr1(String srcText, String keyword) {
int count = 0;
int leng = srcText.length();
int j = 0;
for (int i = 0; i < leng; i++) {
if (srcText.charAt(i) == keyword.charAt(j)) {
j++;
if (j == keyword.length()) {
count++;
j = 0;
}
} else {
i = i - j;// should rollback when not match
j = 0;
}
}
return count;
}
方式二:
public static int findStr2(String srcText, String keyword) {
int count = 0;
Pattern p = Pattern.compile(keyword);
Matcher m = p.matcher(srcText);
while (m.find()) {
count++;
}
return count;
}
方式三:
public static int findStr3(String srcText, String keyword) {
return findStr(srcText, keyword, 0);
}
public static int findStr(String srcText, String keyWord, int pos) {
int i, j, k = 0;
i = pos;
j = 0;
while (i < srcText.length() && j < keyWord.length()) {
if (srcText.charAt(i) == keyWord.charAt(j)) {
++i;
++j;
if (j == keyWord.length()) {
k = k + 1;// k++
j = 0;
}
} else {
i = i - j + 1;
j = 0;
}
}
return k;
}