c# - 如何在 C# 中将字符串格式化为电话号码

我有一个字符串“1112224444”,它是一个电话号码。我想在将其存储到文件之前将其格式化为 111-222-4444。它位于数据记录中,我希望能够在没有的情况下执行此操作分配一个新变量。

我在想:

String.Format("{0:###-###-####}", i["MyPhone"].ToString() );

但这似乎并不能解决问题。

** 更新 **

好的。我选择了这个解决方案

Convert.ToInt64(i["Customer Phone"]).ToString("###-###-#### ####")

现在,当扩展名小于 4 位时,它会变得困惑。它将从右侧填写数字。所以

1112224444 333  becomes

11-221-244 3334

有什么想法吗?

最佳答案

请注意,此答案适用于数字数据类型(int、long)。如果您以字符串开头,则需要先将其转换为数字。另外,请注意您需要验证初始字符串的长度是否至少为 10 个字符。

来自 good page充满了例子:

String.Format("{0:(###) ###-####}", 8005551212);

    This will output "(800) 555-1212".

虽然正则表达式可能会更好,但请记住旧的编程报价:

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
--Jamie Zawinski, in comp.lang.emacs

https://stackoverflow.com/questions/188510/

相关文章:

text - UIButton 中的文本下划线

python - Python中的货币格式

windows - 将换行格式从 Mac 转换为 Windows

asp.net-mvc - 日期格式不正确的 MVC DateTime 绑定(bind)

sql-server - 向 SQL Server Reporting Services 报表添加交

r - 如何在R中将数字格式化为百分比?

python - 转换为二进制并保留前导零

visual-studio - 在 Visual Studio 中关闭自动格式化

javascript - 如果一千或更多,则将数字格式化为 2.5K,否则为 900

mysql - 将数字格式化为 2 位小数