![](/img/trans.png)
[英]Comparing a string with an array list to see if the string contains anything from the list
[英]Checking to see if a list<string> contains text from another list<string>
我有两个不同的列表。 一个只包含服务标题,另一个包含带有文本中服务标题的长句。 我有兴趣找到一种方法来确定一个列表中的标题是否存在于另一个列表的长句子中。 我不是在寻找这两个列表是否完全匹配。 仅当其中一个包含另一个的内容时。
[Ex] 想要验证字符串“Application Scan”是否存在于 list2 中“This is an example sentence that has Application Scan in it”的文本中
列表 list1 = new ArrayList(); 列表 list2 = new ArrayList();
list1.add("Application Scan");
list1.add("Antivirus and HIPS");
list1.add("Backup Administration");
list2.add("This is an example sentence that has Application Scan in it");
list2.add("This is an example sentence that has Antivirus and HIPS in it");
list2.add("This is an example sentence that has Backup Administration in it");
if (list2.containsAll(list1)) {
System.out.print("Yes, list1 contents are in list2");
}
else {
System.out.println("No, list1 contents are not within list2");
}
到目前为止,我的方法一直说在 list2 中找不到 list1 内容,我不确定如何准确解决这个问题
如果您使用的是 Java 8,您可以使用:
if (list2.stream().anyMatch(l -> list1.stream().anyMatch(l::contains))) {
这意味着,要检查 list2 中的每个元素可以包含 list1 中的任何元素
您将不得不迭代这两个列表。 由于 list2 包含大文本,因此外部循环将用于 list2:
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("Application Scan");
list1.add("Antivirus and HIPS");
list1.add("Backup Administration");
List<String> list2 = new ArrayList<>();
list2.add("This is an example sentence that has Application Scan in it");
list2.add("This is an example sentence that has Antivirus and HIPS in it");
list2.add("This is an example sentence that has Backup Administration in it");
list2.forEach(bigtext -> {
list1.forEach(service -> {
if (bigtext.contains(service)) {
System.out.println(service);
}
});
});
}
印刷:
Application Scan
Antivirus and HIPS
Backup Administration
这样做是一样的:
for (String bigText : list2) {
for (String service : list1) {
if (bigText.contains(service))
System.out.println(service);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.