将非结构化电话 # 输入格式化为 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
如果库无法处理扩展,我将在外部处理该问题。
我必须进行哪些调用才能产生所需的输出?
或者,您能否提供一个链接来回答我的问题?
您必须将正则表达式(以串出非数字字段)和字符串格式结合起来。 请注意,号码的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 个字符,并对区号等做出一些假设。
但是 - 这是一个好的开始。