背景
我有一个文本字符串和一个包含我正在查找的单词的哈希集。
给定
String doc = "one of the car and bike and one of those";
String [] testDoc = doc.split("\\s+");
HashSet<String> setW = new HashSet<>();
setW.add("and");
setW.add("of");
setW.add("one");
目标
目标是扫描字符串,每次遇到哈希集中的单词时,我们都会存储该单词和起始索引的位置。
在上述情况下,我们应该能够存储以下内容
one-->0
of-->4
and-->15
and-->24,
one-->28,
of-->32
` 尝试
//create hashmap
for(int i = 0; i<testDoc.length; i++){
if(setW.contains(testDoc[i])) {
doc.indexOf(testDoc[i]);
//add string and its index to hashmap
}
这就是我到目前为止所想到的,唯一的问题是indexOf方法只查看单词的第一次出现,所以我不知道该怎么做。如果我在扫描每个单词后继续修剪字符串,那么我将无法获取原始字符串中单词的索引位置。
我希望在这里得到一些意见。
最佳答案
有一个重载版本的indexOf()它需要一个索引来开始搜索。您可以使用它重复搜索相同的字符串,直到到达末尾。
请注意,您可以删除对 contains()
的测试,这样就不会搜索该字符串两次。
关于java - 查找字符串中多次出现的单词并存储各自的起始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56469180/