public class TestDriver {
public static void main(String[] args) {
String y = "TEST RFP";
String z = "pvs_Test RFP";
boolean m = y.trim().toUpperCase().contains(z.trim().toUpperCase());
boolean x = y.trim().toUpperCase().matches(z.trim().toUpperCase());
boolean q = y.trim().toUpperCase().matches(".*\\b" + z.trim().toUpperCase() + "\\b.*");
System.out.println(m);
System.out.println(x);
System.out.println(q);
}
}
尝试包含,匹配模式匹配器,...但是没有一个工作。我的意图是返回true,因为y和z包含值。
最后我想比较一下 y =“TEST RFP”,具有以下值.. “TEST RFP”, “测试rfp”, “pvs_Test RFP”, “test qa prpsl”, “rFP xyz”等...因为这些单词包含“TEST”或“RFP”,应该返回true。
答案 0 :(得分:2)
你正在逆转,试试:
boolean m = z.trim().toUpperCase().contains(y.trim().toUpperCase());
//=> true
由于z
的字符串大于变量y
中包含的较小字符串,因此返回true。
根据您编辑的问题和评论,您可以使用:
for (String tok: y.toUpperCase().split("\\s+")) {
boolean m = z.toUpperCase().contains(tok);
System.out.println(m);
}