-1

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

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

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

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

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

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

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

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

4

1 回答 1

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”并放弃它。我想检查 < 10 个字符并对区号等做出一些假设。

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

于 2016-01-19T00:03:46.020 回答