![](/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.