Кажется, хорошо, особенно если вы используете только оператор 1 else-if
, а каждая if
оценка состояния отличается от переменной.Тем не менее, вы могли бы сделать его чище, обрезав все 3 переменные перед блоком if
, реорганизовав регулярное выражение и сразу же вернувшись в оператор if
.
Также, чтобы сопоставить с регулярным выражением, используйте Pattern.compile()
и Pattern.matcher()
, чтобы получить соответствующую группу.Затем используйте find()
, чтобы проверить, есть ли совпадение.
public String identifyCellular(Long phone1, Long phone2, Long phone3) {
String matchedRegex = "(07'\\d'{8})|(467'\\d'{8})";
Pattern r = Pattern.compile(matchedRegex);
String phone1Trimmed = String.valueOf(phone1).trim().replaceAll("\\D", " ");
String phone2Trimmed = String.valueOf(phone2).trim().replaceAll("\\D", " ");
String phone3Trimmed = String.valueOf(phone3).trim().replaceAll("\\D", " ");
if (r.matcher(phone2Trimmed).find()) {
return phone2Trimmed;
} else if (r.matcher(phone1Trimmed).find()) {
return phone1Trimmed;
} else {
return phone3Trimmed;
}
}