为印度编号系统设置带逗号分隔符的数字字符串格式
本文关键字:分隔符 数字 数字字符 格式 字符串 编号 系统 设置 | 更新日期: 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)