Kizat Suleimenov Asked:2020-05-04 17:59:51 +0000 UTC2020-05-04 17:59:51 +0000 UTC 2020-05-04 17:59:51 +0000 UTC 如何使用正则表达式替换电话号码 772 例如我有这样的数字String:+77777777777,我想输出这个数字+7 (777) 777 77 77 регулярные-выражения 1 个回答 Voted Best Answer MiT 2020-05-05T00:26:33Z2020-05-05T00:26:33Z 算法: 将 NNN 更改为 (NNN) 并为第一部分添加空格。 我们为第二部分留出空间。 仅正则表达式: 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); } 通过循环和正则表达式: 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); }
算法:
仅正则表达式:
通过循环和正则表达式: