使用逗号分隔符格式化数字字符串,用于印度编号系统

时间:2014-08-27 10:01:24

标签: c# .net

我在string中有一个数字值

string strNum = "12345678.90";

我想使用regex

中的String.Format()使用逗号分隔符对其进行格式化

中使用"{0:n0}"格式
String.Format("{0:n0}", Convert.ToDouble(strNum)); 

它输出为"12,345,679"

而不是我希望输出为"1,23,45,678.90"。经过千千万万的地方,我想要两个数字后的逗号分隔符,分别为十万分之一,十分之一等等

如何实现这一目标?

5 个答案:

答案 0 :(得分:6)

var s = String.Format(new CultureInfo( "en-IN", false ), "{0:n}", Convert.ToDouble("12345678.90"));

答案 1 :(得分:2)

对于这种典型的方式,我会编写一个专门的函数,将一个数字转换为你建议的字符串。

我甚至建议将该项目作为一个类,将值表示为float或不同的项目,如十字架,crores等。

然后创建一个ToString方法以您想要的方式输出它。

示例(未测试):

class SpecialNumber
{
    int _lakhs;
    int _crores;
    int _another_unit;
    int _rest;

    public SpecialNumber(int lakhs, int crores, int another_unit, int rest)
    {
         _lakhs = lakhs;
         _crores = crores;
         _another_unit = another_unit;
         _rest = rest;
    }

    public string ToString()
    {
         // Check for exact formatting.
         return String.Format("{0:2},{1:2},{2:3}.{0:2}", 
          _laksh, _crores, _another_unit, _rest);
    }

答案 2 :(得分:0)

我最好的选择是使用String.Format以及#'#'就这样:

String.Format(0:##,##,##,##,##,###.##)

'#'是一个数字占位符,如果数字不够大,则不会显示零(或其他任何内容)。

有关详细信息,请参阅MSDN custom numeric format strings

答案 3 :(得分:0)

你似乎根据印地文化格式。 所以设置你的文化,或者提供文化String.Format,如

String.Format(CultureInfo.GetCultureInfo( "<yourculture>" ), "{0:n}", Convert.ToDouble(strNum)); 

答案 4 :(得分:0)

使用此代码,您可以将金额字符串更改为印度标准逗号分隔值;使用区域性"hi-IN"和格式"{0:#,0.00}" 这里strNum是我的字符串值。

string.Format( System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"), "{0:#,0.00}", Convert.ToDouble(strNum)