我似乎无法弄清楚如何做到这一点......我被困住了。我可以解决它,但我无法弄清楚如何编写代码。我知道这段代码可能甚至没有接近正确,但我不确定最简单的方法是将chars字符串转换为字符数组还是我离这里很近?
我知道我写的是错的,但我只是想把它写出来,因为它基本上就是我想要做的。感谢您的帮助!
public static int indexOfAny(String s, String chars) {
for (int i = 0; i <= s.length(); i++) {
if ((s.charAt(i)).equals(chars)) {
return i;
} else {
return -1;
}
}
}
答案 0 :(得分:1)
假设您必须检查chars
中的每个字符,并且您不想做出其他假设,例如删除重复的支票:
public static int indexOfAny(String s, String chars) {
int i = -1;
for (char c : chars.toCharArray()) {
int pos = s.indexOf(c);
if (pos >= 0 && (pos < i || i < 0)) {
i = pos;
}
}
return i;
}
答案 1 :(得分:0)
使用
string.indexOf(char)&gt; -1
取代for循环
public static int indexOfAny(String s, String chars) {
if(string.indexOf(chars) > -1)
return string.indexOf(chars);
else
return -1;
}
如果字符有多个字符单独检查
for (char c : chars.toCharArray()) {
if(string.indexOf(c) > -1)
return string.indexOf(c);
}
return -1;
你甚至不需要函数indexOfAny老实说..
答案 2 :(得分:0)
您需要遍历chars
内的所有字符,而不是检查s
中每个字符的字符串相等性。
public static int indexOfAny(String s, String chars) {
for (int i = 0; i < s.length(); i++) {
for (int j = 0; j < chars.length(); j++) {
if (s.charAt(i) == chars.charAt(j)) {
return i;
}
}
}
return -1;
}
或者更短一些:
public static int indexOfAny(String s, String chars) {
for (char c : chars.toCharArray()) {
int i = s.indexOf(c);
if (i >= 0) { return i; }
}
return -1;
}