将非结构化电话 # 输入格式化为 999-999-9999 格式

本文关键字:格式化 999-999-9999 格式 输入 结构化 电话 | 更新日期: 2023-09-27 18:30:58

我正在寻找一种方法来获取最终用户的电话号码输入,考虑到可以格式化的各种方式,并以更标准化的方式重新格式化它。 我的最终用户仅使用美国电话号码。查看Google的LibPhoneNumber的C#端口,我认为它正是为这项任务而设计的,但我无法弄清楚它的用法。

我的输出目标是标准化 999-999-9999 格式。

所以如果用户输入(516)666-1234

,我想输出516-666-1234。

如果用户输入5166661234,我想输出 516-666-1234。

如果可能,如果用户输入 (516)666-1234x102,我希望输出为 516-666-1234x102

如果库无法处理扩展,我将在外部处理该问题。

我必须进行哪些调用才能产生所需的输出?

或者,您能否提供一个链接来回答我的问题?

将非结构化电话 # 输入格式化为 999-999-9999 格式

您必须将正则表达式(以串出非数字字段)和字符串格式结合起来。 请注意,号码的string.Format很棘手,因此我们格式化 10 位电话号码,然后附加分机号。

public string getPhoneNumber(string phone) {
   string result = System.Text.RegularExpressions.Regex.Replace(phone, @"[^0-9]+", string.Empty);
   if (result.Length <= 10) {
       return Double.Parse(result).ToString("###-###-####");
   } else {
       return Double.Parse(result.Substring(0,10)).ToString("###-###-####") + 
       "x " + result.Substring(10, result.Length-10);
   }
}

为了做到这一点,我想检查数字开头的"1"并放弃它。我想检查<10 个字符,并对区号等做出一些假设。

但是 - 这是一个好的开始。