String字串中獲取所有匹配結果的索引值
String字串中獲取所有匹配結果的索引值
例如現在我們有這樣一段程式碼
public interface ActErrorHisMapper { public List<ActError> getPage(Map<String, Object> params); public List<ActError> getList(Map<String, Object> params); public int getCount(Map<String, Object> params); }
我們要查詢所有的public
關鍵字出現的索引,那麼可以這麼寫
public static List<Integer> findAllIndex(String string,int index,String findStr){ List<Integer> list =new ArrayList<>(); if (index != -1){ int num = string.indexOf(findStr,index); list.add(num); //遞迴進行查詢 List myList = findAllIndex(string,string.indexOf(findStr,num+1),findStr); list.addAll(myList); } return list; }
這樣呼叫即可
public static void main(String[] args) { String string = "public interface ActErrorHisMapper {\n" + "\n" + "public List<ActError> getPage(Map<String, Object> params);\n" + "\n" + "public List<ActError> getList(Map<String, Object> params);\n" + "\n" + "public int getCount(Map<String, Object> params);\n" + "}"; List<Integer> num = findAllIndex(string,0,"public"); for (Integer integer : num){ System.out.println(integer); } }
輸出結果如下: