当前位置:  开发笔记 > 编程语言 > 正文

格式化字符串为英国电话号码

如何解决《格式化字符串为英国电话号码》经验,为你挑选了1个好方法。

我正在寻找一个例程,将一串数字格式化为英国电话号码.该例程应考虑需要不同格式的英国区域代码(即伦敦与爱丁堡相比,与伍斯特相比)以及移动号码.

我的电话号码作为字符串存储在数据库中,仅包含数字字符.

到目前为止,我已经想出了这个,但表现似乎很差.

/// 
/// Formats a string as a UK phone number
/// 
/// 
/// 02012345678 becomes 020 1234 5678
/// 01311234567 becomes 0131 123 4567
/// 01905123456 becomes 01905 123456
/// 07816123456 becomes 07816 123456
/// 
public static string FormatPhoneNumber(string phoneNumber)
{
    string formattedPhoneNumber = null;

    if (!string.IsNullOrEmpty(phoneNumber))
    {
        System.Text.RegularExpressions.Regex area1 = new System.Text.RegularExpressions.Regex(@"^0[1-9]0");
        System.Text.RegularExpressions.Regex area2 = new System.Text.RegularExpressions.Regex(@"^01[1-9]1");

        string formatString;

        if (area1.Match(phoneNumber).Success)
        {
            formatString = "0{0:00 0000 0000}";
        }
        else if (area2.Match(phoneNumber).Success)
        {
            formatString = "0{0:000 000 0000}";
        }
        else
        {
            formatString = "0{0:0000 000000}";
        }

        formattedPhoneNumber = string.Format(formatString, Int64.Parse(phoneNumber));
    }

    return formattedPhoneNumber;
}

关于如何改进这一点的想法受到欢迎

编辑

我最初的想法是,我应该将电话号码存储为数据库中的数字字段,然后我可以不使用Int64.Parse并知道它们是真正的数字.

编辑2

电话号码都是英国地理或英国手机号码,因此不需要考虑像0800这样的特殊情况



1> Alnitak..:

英国电话号码的长度从7位到10位不等,不包括前导零."区域"代码可以在2到4个(但偶尔为5个)数字之间变化.

所有显示每个数字前缀的区号和总长度的表都可以从OFCOM的网站获得.注意:这些表长.

而且,对于确切放置空间的位置没有标准.有些人可能会把它们放在不同的地方,这取决于它产生文本的"可读性".

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有