public static boolean checkTelNumber(String telNumber) { // +380501234567
int countOpen = 0; // кол-во открывающихся скобок
int countClose = 0; // кол-во закрывающихся скобок
int plusCount = 0; // кол-во плюсов
boolean result = false;
int openStartPoint = 0; // индекс открывающейся скобки
int closeStartPoint = 0; // индекс закрывающейся скобки
if (telNumber == null || telNumber == "") {
result = false;
} else {
if (Character.isDigit(telNumber.charAt(telNumber.length() - 1))) {// номер заканчивается на цифру
if (telNumber.startsWith("+") && telNumber.replaceAll("[^0-9]", "").matches("\\d{12}"))
result = true; // если номер начинается с '+', то он содержит 12 цифр
else if ((Character.isDigit(telNumber.charAt(0)) || telNumber.startsWith("(")) && telNumber.replaceAll("[^0-9]", "").matches("\\d{10}"))
result = true; // если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр
for (char c : telNumber.toCharArray()) {
if (c != '+' && c != '(' && c != ')' && !Character.isDigit(c)) { // номер может содержать только цифры, '+', '(' и ')'
result = false;
break;
}
if (c == '+') plusCount++;
if (c == '(') { // кол-во открывающихся скобок
countOpen++;
openStartPoint = telNumber.indexOf(c); // индекс открывающейся скобки
}
if (c == ')') { // кол-во закрывающихся скобок
countClose++; // кол-во плюсов
closeStartPoint = telNumber.indexOf(c); // индекс закрывающейся скобки
}
if (countOpen > 0 || countClose > 0) { // если есть хоть одна скобка
if (countOpen == 1 && countClose == 1) { // может содержать 1 пару скобок '(' и ')'
if (openStartPoint < closeStartPoint && (closeStartPoint + 1) - (openStartPoint + 1) == 4) // скобки (если они есть) внутри содержат четко 3 цифры
result = true;
else result = false;
} else result = false;
}
}
if (plusCount>1) result = false; // если плюсов больше 1
} else {
result = false;
}
}
return result;
}package com.javarush.task.task22.task2212;
/*
Проверка номера телефона
*/
public class Solution {
public static boolean checkTelNumber(String telNumber) { // +380501234567
int countOpen = 0; // кол-во открывающихся скобок
int countClose = 0; // кол-во закрывающихся скобок
boolean result = false;
int openStartPoint = 0; // индекс открывающейся скобки
int closeStartPoint = 0; // индекс закрывающейся скобки
if (telNumber == null || telNumber == "") {
result = false;
}
else {
if (Character.isDigit(telNumber.charAt(telNumber.length() - 1))) {// номер заканчивается на цифру
if (telNumber.startsWith("+") && telNumber.replaceAll("[^0-9]", "").matches("\\d{12}")) result = true; // если номер начинается с '+', то он содержит 12 цифр
else if ((Character.isDigit(telNumber.charAt(0)) || telNumber.startsWith("(")) && telNumber.replaceAll("[^0-9]", "").matches("\\d{10}")) result = true; // если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр
for (char c : telNumber.toCharArray()) {
if (c != '+' && c != '(' && c != ')' && !Character.isDigit(c)){ // номер может содержать только цифры, '+', '(' и ')'
result = false;
break;
}
if (c == '(') { // кол-во открывающихся скобок
countOpen++;
openStartPoint = telNumber.indexOf(c); // индекс открывающейся скобки
}
if (c == ')') { // кол-во закрывающихся скобок
countClose++;
closeStartPoint = telNumber.indexOf(c); // индекс закрывающейся скобки
}
if (countOpen == 1 && countClose == 1) { // может содержать 1 пару скобок '(' и ')'
if (openStartPoint < closeStartPoint && (closeStartPoint+1)-(openStartPoint+1) == 4) result = true; // скобки (если они есть) внутри содержат четко 3 цифры
else result = false;
}
}
} else {
result = false;
}
}
return result;
}
public static void main(String[] args) {
}
}