A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面的代码用index();方法来获取一个字符串在另一个字符串中出现的次数。还有别的更好的方法吗
  1. package com.Thread;

  2. public class StringTest3 {

  3.         public static void sop(String str){
  4.                 System.out.println(str);
  5.         }
  6.         public static void main(String[] args) {
  7.                
  8.                 String s = "abkkcdefkkghykk";
  9.                
  10.                 sop("count="+getSubCount(s,"kk"));

  11.         }
  12.        
  13.         public static int getSubCount(String str,String key){
  14.                 int count = 0;
  15.                 int index = 0;
  16.                
  17.                 while((index = str.indexOf(key))!=-1){
  18.                         sop("str="+str);
  19.                         str = str.substring(index+key.length());
  20.                        
  21.                         count++;
  22.                        
  23.                 }
  24.                 return count;
  25.         }


  26. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
有很多方法  ,如果判断单个字符出现的次数就是调用字符串的charAt(index)方法 , 去进行比较 。
如果像你这样比较子串 ,还是用subString像你这种方式比较好  。
回复 使用道具 举报
稍微想了下
应该可以通过remove ,用少掉多少来判断
这样应该就不用循环了
回复 使用道具 举报
  1. /*
  2.                  * 思路:
  3.                  * 1.用一个正则式替换要查询的字串
  4.                  * 2.用那个正则切割原字符串,得字符串数组
  5.                  * 3.如果要查询的字串也出现的最后的位置,在出现次数位数组的长度,否则为数组长度减一
  6.                  *
  7.                  */
  8.                 String str="abkkcdefkkghykk";
  9.                 String s=str.replace(new StringBuilder("kk"),new StringBuilder("_-_"));
  10.                 if(str.endsWith("kk"))
  11.                         System.out.println(s.split("_-_").length);
  12.                 else
  13.                         System.out.println(s.split("_-_").length-1);
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马