规范电话号码

实践练习C++17

简介

你加入了致力于可靠通信的 LinkLine 公司。用户提交的电话号码格式各异,包含连字符、空格、点、圆括号,甚至各种前缀。有些号码有效,有些无法使用。

你的任务是整理这些数据:清洗有效号码,使其符合系统格式,同时识别并过滤无效输入。

能否准确区分有效与无效号码,关系到通信服务是否顺畅。准备接受挑战吧!

任务说明

清洗电话号码,使其能用于发送短信。

北美编号计划 NANP 被美国、加拿大、百慕大等地区采用,所有成员共用国际区号 1。

NANP 电话号码有 10 位:前三位是地区码,后七位是本地号码。本地号码前三位为交换局代码,后四位为用户号码。

通常表示为:

NXX NXX-XXXX

其中 N 是 2 至 9 的任意数字,X 是 0 至 9 的任意数字。

号码前有时还带国家码 1 或 +1。

清除不同格式号码中的标点,并在存在国家码时去掉它。

例如,下列输入:

  • +1 (613)-995-0253
  • 613-995-0253
  • 1 613 995 0253
  • 613.995.0253

都应产生:

6139950253

注意:本练习仅处理 NANP 电话号码,因此合法国家码只有 1。