2010-01-20 5 views
5

Lubię formatować wszystkie liczby, jak w matematyce. czy istnieje predefiniowana funkcja, czy jest to możliwe z podłańcuchem i zastąpić?jak sformatować 1700 na 1'700 i 1000000 na 1 000 000 w C#?

EDIT: moja kultura jest de-ch

poważaniem

+1

których język/kultura jest? –

+0

Dla 1000000 dlaczego miałbyś dwa różne separatory grupowe? Ciekawe, w jakim kraju się znajdujesz? Nigdy nie widziałem apostrofów (do tyłu lub do przodu) używanych do separatorów grupowych - w moim odczuciu jest to zwykle przecinek, spacja lub kropka. –

+0

Nie mam dwóch ... to pomyłka .. im sry –

Odpowiedz

6

Spróbuj

int input = Convert.ToInt32("1700"); 
string result = String.Format("{0:##,##}", input); 

Albo ten

Console.WriteLine(1700.ToString("##,##", new NumberFormatInfo() { NumberGroupSeparator = "'" })); 
+0

działa idealnie, także z różnymi kulturami. Dziękuję Ci. –

0

Spróbuj tego:

Console.WriteLine(1000000.ToString("#,##0").Replace(
    CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator, "'")); 

Albo

NumberFormatInfo likeInMath = new NumberFormatInfo() 
{ 
    NumberGroupSeparator = "'" 
}; 
Console.WriteLine(1000000.ToString("#,##0", likeInMath)); 
+0

To nie działa na moim komputerze. Wydrukowano "1 000 000". Moja kultura to nb-NO – Svish

+0

@Svish, naprawiłem to, spójrz, –

3
var numformat = new NumberFormatInfo { 
        NumberGroupSeparator = "'", 
        NumberGroupSizes = new int[] { 3 }, 
        NumberDecimalSeparator = "." 
       }; 
Console.WriteLine(1000000.ToString("N",numformat)); 
0

zawsze używam tego formatu

"#,##0;#,##0'-';0" 

więc można go używać w

int input = Convert.ToInt32("100000000"); 
string result = String.Format("{#,##0;#,##0'-';0}", input);