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));
    }

 

posted @ 2022-11-02 17:24  lanwf  阅读(975)  评论(0编辑  收藏  举报