将字符串格式化为C#中的电话号码

时间:2011-01-20 14:30:06

标签: c#

我在C#中有一个字符串值1233873600,我必须在C#中将其转换为123-387-7300

是否有任何内置函数可以在c#中执行此操作?

6 个答案:

答案 0 :(得分:9)

将字符串转换为long,并使用格式"{0:### ### ####}";

string.Format("{0:(###) ###-####}", 1112223333);

答案 1 :(得分:3)

string phone = "1233873600".Insert(6, "-").Insert(3, "-");

答案 2 :(得分:2)

您可以使用一个简单的辅助方法来获取字符串,对输入进行消毒以删除空格或用作分隔符的不需要的特殊字符,然后使用内置的ToString方法。如果您检查各种长度,您还可以确保格式在您认为合适时出现。例如:

public string FormatPhoneNumber(string phoneNumber)
    {
        string originalValue = phoneNumber;

        phoneNumber= new System.Text.RegularExpressions.Regex(@"\D")
            .Replace(phoneNumber, string.Empty);

        value = value.TrimStart('1');

        if (phoneNumber.Length == 7)

            return Convert.ToInt64(value).ToString("###-####");
        if (phoneNumber.Length == 9)

            return Convert.ToInt64(originalValue).ToString("###-###-####");
        if (phoneNumber.Length == 10)

            return Convert.ToInt64(value).ToString("###-###-####");

        if (phoneNumber.Length > 10)
            return Convert.ToInt64(phoneNumber)
                .ToString("###-###-#### " + new String('#', (phoneNumber.Length - 10)));

        return phoneNumber;
    }

答案 3 :(得分:1)

我认为正则表达式是最佳选择。

此网站非常适合查找预制的正则表达式字符串。

http://www.regexlib.com/

答案 4 :(得分:0)

您可能希望使用正则表达式。北美电话号码的正则表达式如下所示

^(\(?[0-9]{3}\)?)?\-?[0-9]{3}\-?[0-9]{4}$

我猜你可以在C#中使用Regex.Replace方法。

答案 5 :(得分:0)

字符串格式对我不起作用,所以我做到了:

string nums = String.Join("", numbers);
return nums.Insert(0, "(").Insert(4, ")").Insert(5, " ").Insert(9, "-");