2016-04-09 14 views
0

GWT'nin NumberFormat kullanarak sayıları biçimlendirmeye ve ayrıştırmaya çalışıyorum ancak kullanıcı tarafından seçilen yerel ayardan bağımsız olarak varsayılan biçimi (EN yerel ayarı için) kullanmak istiyorum. Böylece kullanıcılar herhangi bir dili seçebilir, ancak numaraların varsayılan formatı kullanarak görüntülenmesini ve ayrılmasını istiyorum (örneğin, 1.234.89).GWT - seçili yerel ayardan bağımsız olarak varsayılan yerel sayıları biçimlendirme

Bunu yapmanın bir yolu var mı?

EDIT:

For ex. Bu kod yalnızca RU alıyorum, EN yerel ayarda çalışır NumberFormatException

NumberFormat format = NumberFormat.getFormat("#,##0.00"); 
String n = "1,234.89"; 
double value = format.parse(n); 
//do something with value... 

Ben yerel EN için bir NumberFormat örneğini almak gerekir, ama bunu yapabilirim javadocs herhangi yöntemi/yapıcı bulamıyorum.

+0

Lütfen biçimlendirmeyi şimdi nasıl yaptığınızı ve ne denediğinizi gösterin. –

cevap

0

bende sende değil NumberFormat.parseNumberFormat.format, kullanması gereken numara:

NumberFormat format = NumberFormat.getFormat("#,##0.00"); 
Double n = 1234.89; 
RootPanel.get().add(new HTML("Number: " + format.format(n))); 

Ben zaten sayısının formated String temsilini var, NumberFormat gerekmez:

String n = "1,234.89"; 
RootPanel.get().add(new HTML("Number: " + n)); 
+0

Bu sadece bir örnekti, onu işlemek için numaranın çift değerine ihtiyacım var. Gönderiyi düzenledim. –

+0

Tamam. Sadece 'NumberFormat' kodunu kazdım ve 'NumberFormat' yapısında 'NumberConstants' ayarlayarak istediğinizi başarabildiğini söyler. Bunun dışında mümkün değil. 'NumberFormat' yapıcısı korunur ve oluşturulduktan sonra sabit bir 'NumberConstant' belirtmenin bir yolu yoktur (sizin için yararlı olmayan setForcedLatinDigits' hariç). Yani, bir sarsıntı hack yapmak istemediğiniz sürece, istediğiniz şeyi yapmak için 'NumberFormat' kullanmak mümkün değildir diyebilirim. Belki yanılıyor olabilirim, belki başkası bir yol görüyordur ... – grebesche

0

NumberFormat her zaman yerelleştirilmiş bir metni ayrıştırır. NumberConstants cadı kullanır geçerli locale göre ertelenmiş bağlanma yoluyla örneklenir. Maalesef diğer NumberConstants'u kullanarak zorlayamazsınız.

Ancak varsayılan grup ayırıcıyı (,) ve ondalık ayırıcıyı (.) biliyorsunuz. Mevcut yerel ayar için gruplama ve ondalık ayırıcıyı da alabilirsiniz. Yani bunları ayrıştırmadan önce değiştirmeniz gerekiyor.

String n = "1,234.89"; 
n = n.replace(",", LocaleInfo.getCurrentLocale().getNumberConstants().groupingSeparator()); 
n = n.replace(".", LocaleInfo.getCurrentLocale().getNumberConstants().decimalSeparator()); 
double value = format.parse(n); 

Bu, herhangi bir yerel ayar için çalışmalıdır.

Bir numarayı varsayılan yerel ayarıyla biçimlendirmek için, geçerli yerel ayarda biçimlendirmeden sonra karşıt değişimleri yapın.

İlgili konular