我试图在java中生成一个程序,它将字符串输入和第二个输入作为一个单词,我试图从给定的字符串中找到该单词的起始索引。如果单词出现不止一次,它应该给出所有起始索引。
输入字符串:
ped come wrapped to wrap
输入Word(需要找到它的起始索引):
包裹
欲望输出:
9 20
我已经制作了一个找到给定单词的起始索引的程序。但是,我正在努力添加一个更多的逻辑,如果你看到我的输入字符串' s(last_word + first_word)= wrapped
(我正在寻找一个单词)所以我需要得到最后一个单词的起始索引输出也是如此。
这是我到目前为止所生成的内容。
public class Practice {
public static void findWordIndex(String text, String word) {
for (int i = text.length(); (i = text.lastIndexOf(word, i - 1)) != -1; ) {
System.out.println(i);
}
}
public static void main(String[] args){
Practice p = new Practice();
p.findWordIndex("ped come wrapped the wrap", "wrapped");
}
}
答案 0 :(得分:0)
到目前为止你有一个良好的开端。
这可以解决您的问题:
public static String findWordIndex(String text, String word) {
int startIndex = -1;
int endIndex = -1;
for(int i = 0; i < text.length(); i++){ //Start looping through the text
if(text.charAt(i) == word.charAt(0)){ //If the first letter matches
startIndex = i;
for(int j = 1; j < word.length(); j++){ //Check the rest of the word to see if remaining characters match
if(word.charAt(j) != text.charAt(j+i)){ //If one of the characters suddenly doesn't match, reset the process
startIndex = -1;
break;
} else if(j == word.length()-1){ //We're at the end of the word and all of the characters have matched so far
endIndex = i+j;
return "Start: " + startIndex + ", End: " + endIndex;
}
}
}
}
return null; //if all else fails, return null
}
我希望这会有所帮助。如果没有,请告诉我!此外,当你这样做:
public static void main(String[] args){
Practice p = new Practice();
p.findWordIndex("ped come wrapped the wrap", "wrapped");
}
您不必创建当前正在使用的类的实例。您应该只能直接调用findWordIndex:
public static void main(String[] args){
findWordIndex("ped come wrapped the wrap", "wrapped");
}
答案 1 :(得分:0)
以空格为代价,我找到了根据你的问题得到你的字符串索引的方法,我没有在这个解决方案中使用IndexOf()
,我做的是我使用了两个{{ 1}}一个用于单词(省略空格),另一个用于每个字符串的长度,我使用迭代来获取这些字符串的索引,并检查两个单词Arraylist
的组合是否被禁用在省略空格后equal
我的输出是 [7,16] 。这是我的代码:
word