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

标签 java refactoring operators contains

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

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

 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))

关于java - 在不使用 OR 运算符的情况下检查 String 是否包含 Java 中的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69533097/

相关文章:

refactoring - @VisibleForTesting 的替代品

Swift:为什么变异函数不能是静态的

组合复合运算符

java - primefaces 4 - 如何在每次事件发生时创建新的对话框实例

java - 在java中更改输入语言

java - gitlab API gitlab4j Java更改默认分支

java - Xor 从有效位开始

ruby-on-rails - 在 Rails 中重构验证逻辑和正则表达式的最佳方法是什么?

java - 如何使用重构工具安全地重构代码?

python - 以运算符作为参数的函数