我正在尝试编写返回一个Array的代码,该数组的元素是我在字符串中寻找的单词(出现次数)的索引:ex)d输入:
String sent = "Hi is Hi is Hi is";
String find = "Hi";
ArrayList<Integer> index = indexFinder(sent,find);
For(int i=0;i<index.size(),i++)
System.out.println(index.get(i));
输出:
0
6
12
如果Java具有像python ..这样的字符串切片功能,那将非常好,但是由于它没有..我试图使用substring()方法。
import java.util.ArrayList;
public class recursionEx {
ArrayList<Integer> index = new ArrayList<Integer>();
ArrayList<Integer> indexFinder(String sent, String find){
int pos =0;
int subPos =0;
if(sent.contains(find)==false){
return index;
}
else if(sent.contains(find)){
pos = sent.indexOf(find);
index.add(pos);
subPos = pos+find.length();
return indexFinder(sent.substring(subPos),find);
}
return index;
}
public static void main(String[] args) {
String sent = "Hi is Hi is Hi is";
String find = "Hi";
recursionEx r = new recursionEx();
ArrayList<Integer> g = r.indexFinder(sent, find);
for(int i=0;i<g.size();i++){
System.out.println(g.get(i));
}
}
}
输出是
0
4
4
事后看来,我正在获取每次迭代发送的原始String的子字符串,因此索引Array中的元素是在发送的String子字符串中找到的String的索引,其值为0、4、4。
如何解决此问题以获得所需的输出?任何帮助表示赞赏!
您不应将子字符串用作参数,而应仅在字符串中开始搜索。这是一种可行的方法,它并不完美,请尝试使其变得更好:
import java.util.ArrayList;
public class recursionEx {
ArrayList<Integer> index = new ArrayList<Integer>();
String string;
recursionEx(String string){this.string = string;}
ArrayList<Integer> indexFinder(int position, String find){
int pos =0;
int subPos =0;
if(string.substring(position).contains(find)==false){
return index;
}
else if(string.substring(position).contains(find)){
pos = string.substring(position).indexOf(find) + position;
index.add(pos);
subPos = pos+find.length();
return indexFinder(subPos,find);
}
return index;
}
public static void main(String[] args) {
String sent = "Hi is Hi is Hi is";
String find = "Hi";
recursionEx r = new recursionEx(sent);
ArrayList<Integer> g = r.indexFinder(0, find);
for (Integer pos : g)
System.out.println(pos);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句