我需要在字符串中返回字符的唯一值。
我使用的是String.indexOf()
,但它对我来说并不合适。
例如:相机
指数:c-0,a-1,m-2,e-3,r-4,a-5
String.indexOf()
总是为字母" a"返回索引1,而不是我需要的1和5。
任何想法如何解决?
答案 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;
}