统计字符串中某个字符的出现次数
引⾔:统计字符串中某个字符的出现次数其实可以直接使⽤apache commons lang包中的untMatches()⽅法,但觉得写的有点⿇烦了,就⾃⼰实现了⼀个完成类似功能简单的⽅法
1. 不废话,先代码:
1、TestCountMatches 类:
package test;
public class TestCountMatches {
public static void main(String[] args) {
System.out.println(countMatched("abcdeeeee", "e"));
System.out.println(countMatched("abcdeeab", "ab"));
}
/**
* 统计出现次数
* @param string ⽬标字符串
* @param sub ⽬标⼦字符串
* @return
*/字符串长度统计
public static int countMatched(String string, String sub){
//判空,为空直接返回0,表⽰不存在
if(StringUtil.isEmpty(string) || StringUtil.isEmpty(sub)){
return 0;
}
int count = 0;
int index;
// 循环⼀次将出现的字符串索引向后移⼀位,计数器+1,并截取原字符串索引+1的字符串,
// 如“abcdeeeee”第⼀次循环到“e”索引4,substring(4+1)⽅法截取后得到新的字符串“eeee”,
// 循环第⼆次到“e”的索引0,substring(0+1)⽅法截取后得到新的字符串“eee”,,,以此类推
while((index = string.indexOf(sub)) > -1){
count++;
string = string.substring(index + 1);
}
return count;
}
}
2、StringUtil⼯具类:
package test;
public class StringUtil {
/**
* 判断字符串是否为空
* @param string
* @return
*/
public static boolean isEmpty(String string){
if(string == null || "".im())){
return true;
}
return false;
}
}
2. 再看⼀下Apache 提供的⼯具类apache commons lang⽅法countMatches():
public static int countMatches(final CharSequence str, final CharSequence sub) {
if (isEmpty(str) || isEmpty(sub)) {
return 0;
}
int count = 0;
int idx = 0;
while ((idx = CharSequenceUtils.indexOf(str, sub, idx)) != INDEX_NOT_FOUND) {            count++;
idx += sub.length();
}
return count;
}
其实思路差不多,理解了最好⾃⼰动⼿写⼀下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。