当前位置: 代码迷 >> Java Web开发 >> java中怎么查询一个指定的子字符在字符串中出现的指定次数的下标索引
  详细解决方案

java中怎么查询一个指定的子字符在字符串中出现的指定次数的下标索引

热度:6022   发布时间:2013-02-25 21:21:50.0
java中如何查询一个指定的子字符在字符串中出现的指定次数的下标索引
如题 比如 有这么一个字符串“aaa,sss,bbb,ccc,aaa”
我想知道“,”出现第三次时的下标是多少

------解决方案--------------------------------------------------------
对字符串进行遍历吧。
或是按‘,’split一下。再将前三个字符串的长度求和
------解决方案--------------------------------------------------------
Java code
Pattern p = Pattern.compile(",");Matcher m = p.matcher("aaa,sss,bbb,ccc,aaa");int c=0,index=-1;while(m.find()){  c++;  index=m.start();  if(c==3){System.out.println(index);return;}}
------解决方案--------------------------------------------------------
Java code
public class Test {    /**     * @param args     */    public static void main(String[] args) {        String s = "asaa,ssdds,bbb,cffcc,aaa";        System.out.println(getIndex(s, ",", 4));    }    public static int getIndex(String str, String c, int times) {        int index = 0;        String[] arr = str.split(c);        int length = arr.length > times ? times : arr.length;        for (int i = 0; i < length; i++) {            index += arr[i].length();        }        return index + times - 1;    }}
------解决方案--------------------------------------------------------
Java code
public static void main(String[] args) {                //方法1、正则匹配        int num = 0;        String s = "aaa,sss,bbb,ccc,aaa";        Pattern p = Pattern.compile(",");        Matcher m = p.matcher(s);                while(m.find()){            num++;            if(3 == num){                System.out.println(m.start());                            }        }                //方法2,用String的indexOf方法,每找到一个“,”,就将字符串截取,                  //直到找到第三个,将每次下标累加即可。        num = 0;        String s1 = "aaa,sss,bbb,ccc,aaa";        int location = 0;                int index = s1.indexOf(",");        while(-1 != s1.indexOf(",")){            location += index;                        num++;            if(3 == num){                System.out.println(location);                break;            }else{                s1 = s1.substring(index,s1.length());                index = s1.indexOf(",",1);            }        }    }
  相关解决方案