原文:java 统计字符串中 子字符串个数
public class StringContains {
public static void main(String[] args) {
String string = "aabcabdsadad";
String a = "ab";
System.out.println(method_5(string, a));
}
/**
* 方法一
*
* @param string
* @param a
*/
public static int method_1(String string, String a) {
int i = string.length() - string.replace(a, "").length();
return i / a.length();
}
/**
* 方法二
*
* @param string
* @param a
*/
public static int method_2(String string, String a) {
String[] array = string.split(a);
if (array != null) {
return array.length - 1;
} else {
return 0;
}
}
/**
* 方法三
*
* @param string
* @param a
*/
public static int method_3(String string, String a) {
int number = 0;
while (string.indexOf(a) >= 0) {
int beginIndex = string.indexOf(a);
/*
* 在string中剔除字符串a。 但是要注意jajaveve的情况,
* 在第一次去除字符串java后,
* java前面的字符为"ja",后面的字符为“va” 又重新组合为java。
* 故,在连接前后字符串时,
* 加入其它替换字符,本方法中,采用空格字符。
*/
string = string.substring(0, beginIndex) + string.substring(beginIndex + a.length());
number++;
}
return number;
}
/**
* 方法四
*
* @param str
* @param a
*/
public static int method_4(String string, String a) {
int number = 0;
int len = a.length();
int index = 0;
for (int i = 0; i < string.length(); i = len + index) {
if ((index = string.indexOf(a, i)) > -1)
number++;
else
break;
}
return number;
}
/**
* 方法五
*
* @param str
* @param a
*/
public static int method_5(String string, String a) {
int counter = 0;
for (int i = 0; i <= string.length() - a.length(); i++) {
if (string.substring(i, i + a.length()).equals(a)) {
counter++;
}
}
return counter;
}
}