2012-12-07 24 views
6

String.format içindeki sayıları yerel olarak NumberFormat.format ile aynı şekilde çağırmak mümkün mü?java String.format: yerelleştirmeyle birlikte sayılar

ben sadece

String.format(locale, "%d", number) 

kullanmak için beklenen ettik ama NumberFormat kullanarak sanki bu aynı sonuç döndürmez. Örneğin:

String.format(Locale.GERMAN, "%d", 1234567890) 

veriyor: "1234567890",

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890) 

verirken: "1.234.567.890" yapıldığını edilemiyorsa

ne tavsiye yolu da dahil olmak üzere metin lokalize için sayılar? documentation itibaren

+2

neden ilk bir numara haline "Dize-Numara" ayrıştırmak ve sonrasında sayı formatlayıcıyla biçimlendirme yapmıyorsun? – Chris

+0

"String-Number", sayı içeren bir dize olabilir, bu yüzden numaraya ayrışamıyorum. – wziska

cevap

9

, etmelisin:

  • gösteri yerele özgü gruplama seperatörlerine '' bayrak (eğer örnekte yapıyorsun gibi)

    • arz bir yerel
    Yani örnek olacak:

    String.format(Locale.GERMAN, "%,d", 1234567890) 
    

    'd' öncesindeki ek ',' işaretini not edin.

  • +0

    Mükemmel! Okuma belgelerini nasıl okudum bilmiyorum. – wziska

    2

    String.format() bir alternatif MessageFormat kullanmaktır:

    MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN); 
    String s = format.format(new Object[] {number});