我想从这个句子中得到单词的索引。但在这里,我不想检查一个特定的单词。我有一个单词列表,我想从列表中获得句子中任何单词第一次出现的索引
我希望索引从结果索引开始,获取句子的子字符串。
String sentence = "hii rahul ,nice to meet you .How are you?";
ArrayList search = new ArrayList();
search.add("are");
search.add("rahul");
search.add("meet");
for(int i=0;i<search.size();i++)
{
if (sentence.contains(search.get(i))) {
System.out.println("I found the keyword");
} else {
System.out.println("not found");
}
我试着编写一些代码,但不知道如何获取字符串的索引。
输入:
句子:hii rahul,很高兴见到你。你好吗
搜索词的数组列表:[“meet”,“are”,“rahul”]
预期输出:索引为4(因为rahul在句子中排在第一位)
您可能需要将字符串拆分为单词列表。
如果只使用contains(包含)或indexOf(索引),则可能会给出错误的答案。例如
String search = "Doctor Smith went gardening and then went to the cinema on Tuesday";
List<String> words = Arrays.asList("then", "to", "went");
如果使用索引of,这将给出错误的答案,因为字符序列“to”出现在单词“Doctor”中。
这会匹配整个单词(区分大小写)。。。
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class FindWord {
public static void main(String[] args) {
String search = "Doctor Smith went gardening then went to the cinema on Tuesday";
List<String> words = Arrays.asList("then", "to", "went");
int index = 0;
int result = -1;
String match = null;
StringTokenizer tokenizer = new StringTokenizer(search, " ", true);
while(result < 0 && tokenizer.hasMoreElements()) {
String next = tokenizer.nextToken();
if(words.contains(next)) {
result = index;
match = next;
} else {
index += next.length();
}
}
if(match == null) {
System.out.println("Not found.");
} else {
System.out.println("Found '" + match + "' at index: " + result);
}
}
}
Matcher m = Pattern.compile("(meet|are|rahul)").matcher(searchText);
if (m.find()) {
System.out.printf("Found '%s' at position %d%n",
m.group(), m.start());
}
如果要从列表开始:
List<String> keywords = Arrays.asList("meet","are","rahul");
String pattern = keywords.stream().collect(Collectors.joining("|", "(", ")"));
正则表达式搜索速度较慢,但可以添加单词边界\\b(met|are|rahul)
,因此找不到“软件”。或者进行不区分大小写的搜索。
您可以使用字符串。索引(字符串)确定子字符串的起始位置:
Integer lowestIndex = null;
for(String searchWord : search) {
int index = sentence.indexOf(searchWord);
// update the result if the searchWord occurs at a lower position
if (index >= 0 && (lowestIndex == null || lowestIndex > index)) {
lowestIndex = index;
}
}
}
if (lowestIndex == null) {
System.out.println("None of the keywords were found");
}
else {
System.out.printf("First keyword at %s%n", lowestIndex);
}
我有一个程序,其中有一个名称列表,输出说明名称出现了多少次,以及单词出现在哪一行。现在,如果一个名字出现两次,它只输出第一个出现的单词的行号。如果名字出现了不止一次,我怎么能让它说出名字在哪一行呢?
我实际上是一个新手到Java,并试图做一个小项目。所以,在我的项目中,我想让用户输入一个句子,我想让程序在句子中搜索特定的单词,并基于此给出输出。我使用NetBeans开发我的应用程序。 我的代码是这样的 我知道这段代码没有意义,也不会运行,但我这样说是为了让人们对我试图实现的目标有一个大致的了解。 请帮帮我.
问题内容: 我有并想要一些函数,调用的结果是新数组。 问题答案: 看一眼
我想计算一下给定句子中出现了多少个单词。我使用的是C编程语言。它不能计算最后一个字。在给定的字符串中,它计算每个单词发生的次数。如果有像这样的句子,那么程序应该算。但在我的情况下,它不算作。而不是计算,然后: 我的代码:
问题内容: 我想搜索包含许多单词的字符串,并检索与其中任何一个匹配的文档。我的索引方法如下: 这是我的搜索方法。我不想寻找特定的词组,但是其中的任何单词。用于搜索的分析器与用于索引的分析器相同。 我是Lucene的新手。有人可以帮我吗? 问题答案: 使用会精确地尝试将短语“单词列表”与短语坡度0匹配。 如果要匹配单词列表中的 任何 术语,可以使用: 或者,您也可以使用,以便您可以要求查询词的数量的
例如,给定和board= 并遇到以下实现: 在中,为特定单词设置trie后,它执行。在中,它检查。 但是,为什么是直到找到单词中的最后一个字符,那么就不再是了呢? 不依赖于任何索引,它与对象本身直接相关,因此应该可以在任何时候访问,但我只是不明白为什么直到找到该单词的最后一个字符。 谢谢。