2014-08-27 180 views
2

我在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"。千位之后,我希望逗号分隔符在两位数之后用于十万位,百万位等等

这怎么能实现?

回答

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

它给我输出为“12,34,56,79”,但需要的输出是“1,23,45,678.90” – Shubhit304 2014-08-27 10:19:06

+1

编辑。如果你使用正确的文化,你不需要设置NumberGroupSizes – GazTheDestroyer 2014-08-27 10:21:06

+0

thanx,它正在工作...... – Shubhit304 2014-08-27 10:32:03

2

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

我甚至建议,使该项目的一类,其表示为浮动或由不同的项目,如万卢比的价值,亿卢比等

,然后作出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); 
    } 
+0

但我在寻找一个直接的方法如果可能的话,否则使用功能的转变,我已经做了。 – Shubhit304 2014-08-27 10:09:56

+0

你是什么意思的直接方法?什么是你理想的解决方案? (不要讽刺,真的好奇你在追求什么)。 – 2014-08-27 10:12:07

+0

通过直接的方法,我的意思是使用正则表达式来格式化它或任何内置字符串函数的组合...... – Shubhit304 2014-08-27 10:14:47

0

我最好的选择将是使用的String.Format以 '#' 这样沿着:

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

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

查看MSDN custom numeric format strings了解更多详情。

0

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

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