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
。