为印度编号系统设置带逗号分隔符的数字字符串格式

本文关键字:分隔符 数字 数字字符 格式 字符串 编号 系统 设置 | 更新日期: 2023-09-27 18:19:30

我在string中有一个数值作为

string strNum = "12345678.90";

我想在String.Format() 中使用regex用逗号分隔符格式化

"{0:n0}"格式在中的应用

String.Format("{0:n0}", Convert.ToDouble(strNum)); 

它给我的输出是"12,345,679"

相反,我希望输出为"1,23,45,678.90"。在千位之后,我想要两位数字后面的逗号分隔符,分别代表10万、10万等

如何做到这一点?

为印度编号系统设置带逗号分隔符的数字字符串格式

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

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

我甚至建议将该项目作为一个类,将其值表示为浮动或由不同的项目表示,如10万、亿等。

然后制作一个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);
    }

我最好的选择是使用String.Format和'#',如下所示:

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

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

有关详细信息,请参阅MSDN自定义数字格式字符串。

你似乎是按照印度文化来格式化的。因此,设置您的文化,或将文化提供给String.Format,如

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

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

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