2014-11-21 37 views
0

我需要返回字符串中字符的唯一值。 我正在使用String.indexOf(),但它不适用于我。Java如何返回字符串中char的唯一索引?

例如:相机

索引:C-0,A-1,M-2,E-3,R-4,A-5

String.indexOf()始终返回索引1信“a”,而不是我需要的1和5。

任何想法如何解决它?

+2

IndexOf方法有它接受一个开始索引过载,这样你就可以递归调用开始有问题的字符最后一个出场的指数的指数,直到你找到一个完整列表。 https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int,%20int) – 2014-11-21 22:28:48

+0

也检查http://stackoverflow.com/questions/767759/occurrences-字符串中的字符串 – zlinks 2014-11-21 22:30:48

回答

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; 
} 
+0

我可以使用数组作为'charToFind'吗?我需要找到所有元音 – user1950221 2014-11-21 22:56:50

+0

调用数组的每个元素的方法,以便快速解决,否则使用正则表达式来处理这样的问题 – orak 2014-11-21 23:05:36

+0

每个元素的调用方法不是好主意,因为我需要它在一个数组中 – user1950221 2014-11-21 23:28:20

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; 
} 
相关问题