在不使用 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))
我这里有一个代码,用于检查记录的标题是否包含我们要忽略的四个值之一。如果标题中包含这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))