2014-08-27 136 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));