2009-07-30 8 views
5

Czy to prawda, że ​​String.Format działa na 2 sposoby: jeśli używamy wbudowanego formatu, takiego jak C, N, P .... to uwzględni ustawienia regionalne? jeśli użyjemy niestandardowego kodu formatu, takiego jak #, ## 0.000 to NIE bierze pod uwagę ustawień regionalnych?String.Format uwzględnia ustawienia regionalne czy nie?

W moim kodu używam metody jak ten

String.Format ("{0: # ## 0000.}", Wartość);

bo moje użycie kraj przecinek dziesiętny

ale wynik nadal jest: 1,234.500 jakby to rozważyć kropkę jako separator dziesiętny.

Proszę pomóc!

+5

Czy kiedykolwiek zastanawiałeś się nad dokumentacją String.Format? –

Odpowiedz

13

Chcesz użyć CultureInfo:

value.ToString("N", new CultureInfo("vn-VN")); 

Korzystanie String.Format:

String.Format(new CultureInfo("vi-VN"), "N", value); 

Skoro jesteś w Hanoi (z profilu), użyłem kodu Wietnamu, który jest vn-VN.

2

To działa.

IFormatProvider iFormatProvider = new System.Globalization.CultureInfo("es-ES"); 

string s = value.ToString("#,##0.000", iFormatProvider); 

string s2 = string.Format(iFormatProvider, "{0:#,##0.000}", val) 

Zauważ, że , i . używasz „standardowego” styl en-us, ale .ToString() i string.Format() z dostawcą formacie robi słusznie.