C#字符串格式化程序

时间:2018-10-28 22:09:54

标签: c# .net string

我想格式化字符串。假设有:

string unformatedString="004897582515"
string stringFormater="{0:00#-###-###-####}"

格式化后:

string result = String.Format(stringFormater, Int64.Parse(unformatedString));

结果是:000-044-788-9556

我想知道为什么吗?因为在将unformatedString解析为Int64后,我得到的4897582515值是整数,但是格式化它之后总是有另外的零(它基于unformatedString开头的零计数)。

1 个答案:

答案 0 :(得分:0)

004897582515之所以用格式说明符000-0xx-xxx-xxx变成"{0:00#-###-###-####}"的简单原因是因为0的开头

Custom numeric format strings

  

格式说明符

     
      
  • 0:零占位符      
        
    • 将零替换为相应的数字(如果存在);否则,结果字符串中将出现零。
    •   
  •   

也许您想要"{0:###-###-###-####}"

  

格式说明符

     
      
  • #:数字占位符      
        
    • #符号替换为相应的数字(如果存在的话);否则,结果字符串中不会出现数字。
    •   
  •   

在最坏的情况下会导致"-xxx-xxx-xxxx"

但是,您可以入侵TrimStart('-')

Console.WriteLine(string.Format("{0:###-###-###-####}", 004897582515).TrimStart('-'));

哪个会删除前导破折号

输出

489-758-2515

Full Demo Here