String str1 = "nihaoksdoksad";
String str2 = "ok";
int total = 0;
for (String tmp = str1; tmp != null&&tmp.length()>=str2.length();){
if(tmp.indexOf(str2) == 0){
total ++;
}
tmp = tmp.substring(1);
}
System.out.println(str1+"中含有"+total+"个"+str2);
上面我写的算法是字符可以覆盖的查找:
下面给你一种不允许字符覆盖的查找:
String str1 = "nihaokokosdokosad";
String str2 = "oko";
int total = 0;
for (String tmp = str1; tmp != null&&tmp.length()>=str2.length();){
if(tmp.indexOf(str2) == 0){
total ++;
tmp = tmp.substring(str2.length());
}else{
tmp = tmp.substring(1);
}
}
String str2 = "ok";
int total = 0;
for (String tmp = str1; tmp != null&&tmp.length()>=str2.length();){
if(tmp.indexOf(str2) == 0){
total ++;
}
tmp = tmp.substring(1);
}
System.out.println(str1+"中含有"+total+"个"+str2);
上面我写的算法是字符可以覆盖的查找:
下面给你一种不允许字符覆盖的查找:
String str1 = "nihaokokosdokosad";
String str2 = "oko";
int total = 0;
for (String tmp = str1; tmp != null&&tmp.length()>=str2.length();){
if(tmp.indexOf(str2) == 0){
total ++;
tmp = tmp.substring(str2.length());
}else{
tmp = tmp.substring(1);
}
}
System.out.println(str1+"中含有"+total+"个"+str2);
String s="aass";
String y="111aaassbc222abc333abcabc";
System.out.println(new Sql().countNumber(s,y));
}
public int countNumber(String s,String y){ //统计方法
int count=0;
String [] k=y.split(s); //将字符串通过s断开返回数组k
if(y.lastIndexOf(s)==(y.length()-s.length())) //如果y最后一个包含s的索引等于y的长度-要的长度,那么出现的次数就等于k的长度
count=k.length;
else
count=k.length-1;//否则k长度-1,因为s不是单字符是多个
if(count==0)
System.out.println ("字符串\""+s+"\"在字符串\""+y+"\"没有出现过");
else
return count;
return -1;