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

时间:2016-01-18 23:40:09

标签: c# libphonenumber

我正在寻找一种方法来接收来自最终用户的电话号码输入,给出了可以格式化的各种方式,并以更标准化的方式重新格式化。我的最终用户只使用美国电话号码。看看google的LibPhoneNumber的C#端口,我认为它是针对这个任务完成的,但我无法弄清楚它的用法。

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

因此,如果用户输入(516)666-1234,我想输出516-666-1234。

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

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

如果图书馆无法处理扩展程序,我会在外部处理该问题。

我必须做出哪些调用来产生所需的输出?

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

1 个答案:

答案 0 :(得分:3)

您必须组合RegEx(以字符串输出非数字字段)和字符串格式。请注意,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”并抛弃它。我想检查&lt; 10个字符并对区号等做出一些假设。

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