在不使用 OR 运算符的情况下检查字符串是否包含 Java 中的多个值?

Check if a String contains multiple values in Java without using OR operators?

我这里有一个代码,用于检查记录的标题是否包含我们要忽略的四个值之一。如果标题中包含这4个字符串,我们想将其放入数据库并将state设置为IGNORE。如果没有,我们还是想把它放到数据库中,把state设置成NEW,以便后面处理。

该代码有效,但是,它有点眼痛。我怎样才能以更清晰、更高效、更易于阅读的方式编写它?

 if (
    record.getTitle().contains("word") ||
    record.getTitle().contains("different word") ||
    record.getTitle().contains("phrase") ||
    record.getTitle().contains("different phrase")
  ) {
    int id = dao.insert(nv);
    nvRecord =
      NV
        .builder()
        .from(nv)
        .setId(id)
        .setState(state.IGNORE)
        .build();
  } else {
    int id = dao.insert(nv);
    nvRecord =
      NV
        .builder()
        .from(nv)
        .setId(id)
        .setState(state.NEW)
        .build();
  }

您可以对“标题”使用正则表达式,后跟一、二、三或四。喜欢,

if (record.getTitle().matches("Title [1234]")) {

或者编译 Pattern 并使用 Matcher

Pattern p = Pattern.compile("Title [1234]");
Matcher m = p.matcher(title);
if (m.matches()) {

根据您更新后的要求,流式传输 List 您的特殊标题并检查记录标题是否包含它。喜欢,

if (List.of("Titanic", "The Great Gatsby", "Catch Me If You Can", "Inception")
        .stream().anyMatch(record.getTitle()::contains))