【问题标题】:How to loop through a string then find if a part of that string is in an arrayList如何遍历字符串然后查找该字符串的一部分是否在arrayList中
【发布时间】:2020-06-28 02:50:47
【问题描述】:

我要做的是通过字符串查找循环,然后将它们与 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 循环,但不确定如何构建它。

【问题讨论】:

  • 感谢采纳答案,考虑点赞;>
  • 感谢您的帮助!我很感激。而我就是这样做的。 =)

标签: java regex string arraylist matcher


【解决方案1】:

你可以使用正则表达式:

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

这将返回boolean,指示patterntoSearch 中的任何元素是否包含在text 中。

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

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

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

我默认传递了null,但你可以提供任何String

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 2016-05-08
    • 1970-01-01
    • 2020-12-21
    • 2017-09-23
    • 2022-01-15
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多