我想格式化字符串。假设有:
string unformatedString="004897582515"
string stringFormater="{0:00#-###-###-####}"
格式化后:
string result = String.Format(stringFormater, Int64.Parse(unformatedString));
结果是:000-044-788-9556
我想知道为什么吗?因为在将unformatedString
解析为Int64
后,我得到的4897582515
值是整数,但是格式化它之后总是有另外的零(它基于unformatedString开头的零计数)。
答案 0 :(得分:0)
004897582515
之所以用格式说明符000-0xx-xxx-xxx
变成"{0:00#-###-###-####}"
的简单原因是因为0
的开头
格式说明符
0
:零占位符
- 将零替换为相应的数字(如果存在);否则,结果字符串中将出现零。
也许您想要"{0:###-###-###-####}"
格式说明符
#
:数字占位符
- 将
#
符号替换为相应的数字(如果存在的话);否则,结果字符串中不会出现数字。
在最坏的情况下会导致"-xxx-xxx-xxxx"
但是,您可以入侵TrimStart('-')
Console.WriteLine(string.Format("{0:###-###-###-####}", 004897582515).TrimStart('-'));
哪个会删除前导破折号
输出
489-758-2515