将12346格式化为电话号码123-46格式
本文关键字:电话号码 123-46格式 格式化 12346 | 更新日期: 2023-09-27 18:13:23
下面代码会返回"-1-2346",怎么返回"123-46"呢?我们将数据库中的电话号码保存为varchar(20),并且始终为10 digitalis。Asp页面只需要显示它是什么
var phoneNumber = 12346;
var phoneString = String.Format("{0:###-###-####}",12346);
您可以创建自定义格式提供程序
public class TelephoneFormatter : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
return formatType == typeof(ICustomFormatter) ? this : null;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
var numericString = arg.ToString();
if (format != "###-###-####")
return String.Format(format, arg);
if (numericString.Length <= 3)
return numericString;
if (numericString.Length <= 6)
return numericString.Substring(0, 3) + "-" + numericString.Substring(3, numericString.Length - 3);
if (numericString.Length <= 10)
return numericString.Substring(0, 3) + "-" +
numericString.Substring(3, 3) + "-" + numericString.Substring(4, numericString.Length - 6);
throw new FormatException(
string.Format("'{0}' cannot be used to format {1}.",
format, arg));
}
}
之后你可以使用
public static void Test()
{
Debug.Print(String.Format(new TelephoneFormatter(), "{0:###-###-####}", 0));
Debug.Print(String.Format(new TelephoneFormatter(), "{0:###-###-####}", 911));
Debug.Print(String.Format(new TelephoneFormatter(), "{0:###-###-####}", 12346));
Debug.Print(String.Format(new TelephoneFormatter(), "{0:###-###-####}", 8490216));
Debug.Print(String.Format(new TelephoneFormatter(), "{0:###-###-####}", 4257884748));
}
我希望它能帮助你。
结果0
911
123-46
849-021-2
425-788-8847