我有一个方法,其中一个字母(string\char?)作为参数,一次激活一个单词。我想看看这一个字母,是否在当时活跃的单词中。
这也许可以得到更好的解释。也许代码会起作用:
public void checkLetter(String letter){
for(int i = 0; i<activeWord.length(); i++){
if(letter.equals(activeWord.[i])){
// Run a method which gives the user a correct letter pushed.
}
else {
String failed = "Could not find the letter in the active word.";
// Run a method which gives the user one wrong letter pushed.
}
}
}
所以,这将是一个刽子手游戏为安卓我正在做的乐趣。现在我有字母的图像。当按下字母(图像)时,此方法将运行,并且按下的字母将成为参数。
有人有什么好主意吗?我怎么才能知道这个字母是否在单词里,它在哪个位置?
我希望得到一些帮助:)
EDIT:顺便说一句,当前代码每次ofc都会返回int,因为[i]是int。这就是我试图让代码返回字符串的地方。我必须先把单词分成字母,然后才能把它们等于另一个字符串吗?谢谢
使用String.indexOf()
String myString = "word";
myString.indexOf("w"); // this returns 0;
myString.indexOf("h"); // this returns -1
这只会给出字母在字符串中首次出现的位置。要获得其他位置,您需要从最后一个位置获取子字符串并重复该过程。
使用String的方法
int i = 0;
while(word.indexOf(i, letter) != -1) {
i = word.indexOf(i, letter) + 1;
//Do whatever
}
if(i == 0) {
//Handle missed letter
}
您正在寻找String.indexOf
:
int pos = activeWord.indexOf(letter);
if (pos == -1) {
// letter not found
}
else {
// letter exists at zero-based position pos
// CAUTION: it might also exist in later positions!
}
使用String.indexOf(String s)
,返回第一次出现的索引,如果未找到,则使用-1
一个受WTF启发的bruteforce regex日常解决方案怎么样?否则只使用String.indexOf(char)…
String input = "Hello world";
char test = 'o';
int found = -1;
for (int i = 0; i < input.length(); i++) {
StringBuilder builder = new StringBuilder();
for (int c = 0; c < input.length(); c++) {
if (c == i) {
builder.append(test);
} else {
builder.append(".");
}
}
Pattern p = Pattern.compile(builder.toString());
if (p.matcher(input).find()) {
found = i;
break;
}
}
System.out.println(found);