如何循环遍历一个字符串,然后查找该字符串的一部分是否在 arrayList 中

How to loop through a string then find if a part of that string is in an arrayList

我想做的是通过字符串找到循环,然后将它们与 arrayList 匹配。

说,我让这段代码工作:

import java.io.*;
import java.text.ParseException;
import java.util.*;

public class Test_Mark4 {
    public static ArrayList<String> patterntoSearch;
    public static void main(String[] args) throws IOException, ParseException {
        String text = "Lebron James";
        patterntoSearch = new ArrayList();
        patterntoSearch.add("Lebron James");
        patterntoSearch.add("Michael Jordan");
        patterntoSearch.add("Kobe Bryant");
        System.out.println(patterntoSearch);
        System.out.println(text);
        boolean valueContained = patterntoSearch.contains(text);
        System.out.println(valueContained);
    }
}

但是,如果我将 String text = "Lebron James"; 替换为 String text = "Lebron James 2017-218 NBA Hoops Card"; 会怎样?显然那个字符串中有字符串 Lebron James,但它也与其他单词混合在一起(我不关心,只关心字符串 Lebron James。我想过一个 for 循环但不确定如何构造它。

您可以为此使用正则表达式:

patterntoSearch.stream()
    .anyMatch(s -> text.matches(".*" + s + ".*"));

这个returns boolean表示patterntoSearch中的任何元素是否包含在text中。

patterntoSearch.stream()
    .filter(s -> text.matches(".*" + s + ".*"))
    .collect(Collectors.toList());

这将 return patterntoSearch 中包含在 text 中的单词列表。如果你只想要一个,那么:

patterntoSearch.stream()
    .filter(s -> text.matches(".*" + s + ".*"))
    .findAny()
    .orElse(null);

我已经默认通过null,但您可以提供任何String