どのようにループに紐を通してその文字列の一部がArrayListのであれば見つけます

kyrie3:

私は何をしようとしていることは、その後の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 + ".*"));

このリターンbooleanの任意の要素があるかどうかを示すpatterntoSearchに含まれていますtext

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

これは、内の単語のリストを返しますpatterntoSearchに含まれています、textあなたは1つだけを、必要な場合:

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

私が合格したnullデフォルトとして、しかし、あなたはいずれかを提供することができますString

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=296191&siteId=1