#java #refactoring #operators #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(); }
Ответ №1:
Вы можете использовать регулярное выражение для «Названия», за которым следует один, два, три или четыре. Нравится,
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))
Комментарии:
1. Вам не нужно
|
находиться внутри класса персонажей. Должно быть[1234]
или[1-4]
.2. @хелвуд Хорошая мысль. Я не думал об этой части (ясно).
3. Спасибо вам за ваш ответ! Я забыл указать, что названия сильно отличаются друг от друга и не следуют шаблону. Например: «Титаник», «Великий Гэтсби», «Поймай Меня, Если Сможешь», «Начало»
4.
if (List.of("Titanic", "The Great Gatsby", "Catch Me If You Can", "Inception").stream().anyMatch(record.getTitle()::contains))
5. Большое вам спасибо! Это намного чище!