Java 字符串搜索多个值
我有一个问题陈述,其中我需要搜索一个包含值列表的巨大文本。搜索的结果应该是找到的值,而不是布尔值true或false 例:Java 字符串搜索多个值,java,string,Java,String,我有一个问题陈述,其中我需要搜索一个包含值列表的巨大文本。搜索的结果应该是找到的值,而不是布尔值true或false 例: String str=“这是java搜索的示例字符串”; 列表值=Arrays.asList(“java”、“net”); 因此,如果我用值搜索字符串str,那么这个搜索的结果应该是“java”,因为str包含“java”。是否有任何库可以实现此目的?是否希望所有值都作为返回列表找到 您可以使用java.util.Set.retainAll(集合)函数 package t
String str=“这是java搜索的示例字符串”;
列表值=Arrays.asList(“java”、“net”);
因此,如果我用
值搜索字符串str
,那么这个搜索的结果应该是“java”,因为str
包含“java”
。是否有任何库可以实现此目的?是否希望所有值都作为返回列表找到
您可以使用java.util.Set.retainAll(集合)
函数
package test;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Test2 {
public static void main(String[] args) {
String str = "this is a sample string for java search";
Set<String> values = new HashSet<String>(Arrays.asList("java", "net", "a"));
Set<String> split = new HashSet<String>(Arrays.asList(str.split(" ")));
values.retainAll(split);
System.out.println("Values found in text: "+values);
}
}
封装测试;
导入java.util.array;
导入java.util.HashSet;
导入java.util.Set;
公共类Test2{
公共静态void main(字符串[]args){
String str=“这是java搜索的示例字符串”;
Set values=newhashset(Arrays.asList(“java”、“net”、“a”));
Set split=newhashset(Arrays.asList(str.split(“”));
价值。保留(分割);
System.out.println(“在文本中找到的值:“+值”);
}
}
输出:
在文本[a,java]中找到的值
如果需要第一个匹配值,可以使用流
api:
String value = values.stream()
.filter(str::contains)
.findFirst()
.orElse(null);
如果您想要全部:
values.removeIf(s -> !str.contains(s));
这使得值
仅包含str中包含的元素
或者如果您不想修改值
:
List<String> newValues = values.stream()
.filter(str::contains)
.collect(Collectors.toList());
List newValues=values.stream()
.filter(str::contains)
.collect(Collectors.toList());
收集器.toSet()不是更好吗?@StephanHogenboom wellvalues
已经是一个列表了(我假设它是不同的),所以结果不可能更清晰。但是我同意一套可能会更好
List<String> newValues = values.stream()
.filter(str::contains)
.collect(Collectors.toList());