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

我可以像.NET中的数字一样格式化字符串吗?

如何解决《我可以像.NET中的数字一样格式化字符串吗?》经验,为你挑选了3个好方法。

如果我有这样的电话号码

string phone = "6365555796";

我在数据库中只存储数字字符(作为字符串),是否可以输出如下数字:

"636-555-5796"

类似于我使用数字时的情况:

long phone = 6365555796;
string output = phone.ToString("000-000-0000");

我试过搜索,我在网上找到的只是数字格式文件.

我问的原因是因为我认为能够仅在数据库中存储数值并允许使用常量字符串值来指定我的电话号码格式的不同格式是一个有趣的想法.或者我最好使用一个数字吗?

编辑:问题是格式化包含数字的字符串,而不是数字本身.



1> Esteban Bren..:

我能想到的最好而不必转换为长/数字,所以它适合一行是:

string number = "1234567890";
string formattedNumber = string.Format("{0}-{1}-{2}", number.Substring(0,3), number.Substring(3,3), number.Substring(6));



2> Dour High Ar..:

请注意,并非每个人都使用北美3-3-4格式的电话号码.欧洲电话号码最长可达15位,标点符号较大,例如+ 44-XXXX-XXXX-XXXX与44 + XXXX-XXXX-XXXX不同.您也没有考虑可能需要超过30位的PBX和扩展.

军用和无线电话可以有字母字符,这不是你在按键式电话上看到的"2"="ABC".



3> Joel Coehoor..:

简单版本:

string phone = "6365555796";
Convert.ToInt64(phone).ToString("000-000-0000");

围绕它进行一些验证并将其放在一个很好的方法中:

string FormatPhone(string phone)
{
   /*assume the phone string came from the database, so we already know it's
     only digits.  If this changes in the future a simple RegEx can validate 
     (or correct) the digits requirement. */

   // still want to check the length:
   if (phone.Length != 10) throw new InvalidArgumentException();

  return Convert.ToInt64(phone).ToString("000-000-0000");
}

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