Java的indexOf返回的是第一個匹配到的字符的索引位置,substring(a,b)獲得字符串的一部分內容


背景:我要實現一個功能,需要匹配兩個字符串是否有相同的字符,所以就寫了下面一個小方法,定義兩個字符串a和b,循環遍歷
b,如果a中有b的子串就將匹配數量num+1
 
遇到的問題:開始判斷字符串中是否存在某字符的公式(a.indexOf(sub_key)>0。結果發現當第一個位置相同時,總是少一個匹配數量
 
原因:indexOf返回的是第一個匹配的位置的索引位置,即第一位是0,而不是返回匹配的個數
          如果沒有匹配上返回的是-1
 
解決方案:只要結果不等於-1(或者說大於-1)就是匹配到了
 
public int getmatchnum(String a,String b){
    int num = 0;
    for(int i =0;i<b.length();i++){
        String sub_key = b .substring(i,i+1);
        System.out.println(sub_key);
        int j = a.indexOf(sub_key);
        if (a .indexOf(sub_key)>-1 ){
            num = num +1;
            System.out.println(num);
        }
    }
 
其他說明:substring(a,b)是取的子字符串,括號內a為索引起始位置,b為截止位置(不包括b位置的字符)
               indexOf還有其他參數,比如可以規定從第幾個索引位置開始匹配,這個如果用的話自己去搜索吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM