как с помощью RegExp заменить номер телефона?
например, у меня есть такой номер в String: +77777777777, я хочу вывести этот номер как +7 (777) 777 77 77
Ответы (1 шт):
Автор решения: MiT
→ Ссылка
Алгоритм:
- Меняем NNN на (NNN) и добавляем пробелы для первой части.
- Делаем пробелы для второй части.
Только RegEx:
void main() {
String s = "+77777777777";
print(s);
s = s.replaceRange(2, 5,
s.replaceAllMapped(
RegExp(r"^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$"),
(m) => " (${m.group(3)}) ",
))
.replaceAllMapped(
RegExp(r"(\d{2})(?=(\d{2})+(?!\d))"),
(match) => "${match.group(0)} ",
);
print(s);
}
Через цикл и RegEx:
void main() {
String s = "+77777777777";
print(s);
String temp = "";
for (int i = 0; i < s.length; i++) {
if (i == 2)
temp += " (${s[i]}";
else if (i == 4)
temp += "${s[i]}) ";
else
temp += s[i];
}
s = temp.replaceAllMapped(
RegExp(r"(\d{2})(?=(\d{2})+(?!\d))"),
(match) => "${match.group(0)} ",
);
print(s);
}