如何使用Contains或match返回true?

时间:2015-04-10 17:50:22

标签: java regex java-ee compare comparator

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。

1 个答案:

答案 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);
}