Java如何在字符串中返回char的唯一索引?

时间:2014-11-21 22:26:32

标签: java string indexing position indexof

我需要在字符串中返回字符的唯一值。 我使用的是String.indexOf(),但它对我来说并不合适。

例如:相机

指数:c-0,a-1,m-2,e-3,r-4,a-5

String.indexOf()总是为字母" a"返回索引1,而不是我需要的1和5。

任何想法如何解决?

2 个答案:

答案 0 :(得分:0)

public static void main(String[] args) {
    List<Integer> indexes = getIndexInString("camera", "a");
    System.out.println(indexes);

}

public static List<Integer> getIndexInString(String str, String charToFind) {
    List<Integer> indexes = new ArrayList<Integer>();

    int i = -1;

    while (true) {
        i = str.indexOf(charToFind, i + 1);
        if (i == -1)
            break;
        else
            indexes.add(i);
    }


    return indexes;
}

答案 1 :(得分:0)

你走了。

public static void main(String[] args) {
    String text = "camera";
    String[] indexes = getIndexesOf(text);
    for(String i : indexes) {
        System.out.println(i);
    }
    System.out.println();
    int[] result = indexOfChar(text, "a");
    for(int i : result) {
        System.out.print(i +",");   
    }

}

public static String[] getIndexesOf(String text) {
    String[] indexes = new String[text.length()];
    for(int i=0; i<text.length(); i++) {
        indexes[i] = text.charAt(i) + "-" + i;
    }
    return indexes;
}

public static int[] indexOfChar(String text, String c) {
    List<Integer> indexOfChars = new ArrayList<Integer>();
    for(int i=0; i<text.length(); i++) {
        if(String.valueOf(text.charAt(i)).equals(c)) {
            indexOfChars.add(i);
        }
    }
    int [] retIndexes = new int[indexOfChars.size()];
    for(int i=0; i<retIndexes.length; i++) {
        retIndexes[i] = indexOfChars.get(i).intValue();
    }
    return retIndexes;
}