Java Lambda | 在字符串中查找字符串数组第一次出现的位置

Asf*_*sfK 2 java lambda java-8

我想建立一个方法int getIndexOfFirstFound(String text, String[] words)

该方法接收文本和单词数组,并应返回找到的第一个单词的索引。

我知道用简单的迭代来做,就像这样:

for (String word : words) {
    if (text.indexOf(word) != -1) return text.indexOf(word);
}
return -1;
Run Code Online (Sandbox Code Playgroud)

但是对于我的培训,如果可能的话,我会看看如何使用 lambda 来做到这一点......我知道我可以检查字符串是否包含数组中的一个单词:Arrays.stream(words).parallel().anyMatch(text::contains)但我不知道如何返回索引..

很高兴知道如何用现代方式找到第一个找到的单词索引,谢谢!

PS示例:

Text= "你好我是你的短信,你好吗?" Words= [“你的”,“是”]

结果应该是“你的”(10)的索引

ern*_*t_k 5

你的 for 循环最简单的等价物是

int getIndexOfFirstFound(String text, String[] words) {
    return Arrays.stream(words)
            .mapToInt(text::indexOf)
            .filter(i -> i >= 0)
            .findFirst()
            .orElse(-1);
}
Run Code Online (Sandbox Code Playgroud)