java中indexOf()获取指定次数的下标
indexOf() :指定字符在此实例中的第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置
Java中提供了四中查找方法:
int indexOf(String str) 返回第一次出现的索引。 int indexOf(String str, int fromIndex)从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 int lastIndexOf(String str) 返回在此字符串中最后定子字符串的索引。 int lastIndexOf(String str, int fromIndex)从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
那么怎么获取指定次数的下标呢,java并没有直接给我们提供,我们自己去实现一下
/** * 方法重载,赋默认值 * @param str * @param separator * @return */ public static Map indexMapOf(String str, String separator) { return indexMapOf(str, separator, 0, null, 1); } /** * 具体实现方法 * @param str 源字符 * @param separator 分割符 * @param fromIndex 从第几个下标开始 * @param map Map记录次数对应的下标 * @param key 下标从1开始 * @return */ public static Map indexMapOf(String str, String separator, Integer fromIndex, Map map, Integer key) { if (map == null) { map = new HashMap(); } int index = str.indexOf(separator, fromIndex); if (index > 0) { System.err.println(separator +"出现的下标:"+index); map.put(key, index); indexMapOf(str, separator, ++index, map, ++key); } return map; } public static void main(String[] args) { String str = "abcde$fgh$ijkl$mn$opqrst$uvxy$z"; System.err.println("字符串为:"+str+" 求'$'出现的次数以及下标"); Map<Integer, Integer> m = indexMapOf(str, "$"); System.err.println("map------------"); for (Map.Entry<Integer, Integer> entry : m.entrySet()) { System.err.println("第"+entry.getKey() + "次 : 下标为" + entry.getValue()); } System.err.println("-----找第5次出现的下标-----"); System.err.println("第5次indexOf的数值是:" + m.get(5)); }
本文来自博客园,作者:lanwf,转载请注明原文链接:https://www.cnblogs.com/lccsdncnblogs/p/16851333.html