2014-11-21 62 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; 
} 
相關問題