在您的帮助下,DecimalFormatSymbols
您可以请求基于区域设置的特征,例如小数分隔符或千位分隔符。
只要您为常用语言标签(例如de-AT
, en-US
)请求它,它就会按预期工作。但是,如果您混合使用语言与国家/地区的组合,它的行为就会很奇怪。特别是,让我们看一下千位分隔符。(英语是,
,德语是.
)
System.out.println("en-US: " + DecimalFormatSymbols.getInstance(Locale.US).getGroupingSeparator());
System.out.println("de-DE: " + DecimalFormatSymbols.getInstance(Locale.GERMANY).getGroupingSeparator());
System.out.println("de-US: " + DecimalFormatSymbols.getInstance(new Locale.Builder().setLanguage("de").setRegion("US").build()).getGroupingSeparator());
System.out.println("de: "+DecimalFormatSymbols.getInstance(new Locale.Builder().setLanguage("de").build()).getGroupingSeparator());
System.out.println("DE: " + DecimalFormatSymbols.getInstance(new Locale.Builder().setRegion("DE").build()).getGroupingSeparator());
System.out.println("ru-RU: " + DecimalFormatSymbols.getInstance(new Locale.Builder().setLanguage("ru").setRegion("RU").build()).getGroupingSeparator());
System.out.println("RU: " + DecimalFormatSymbols.getInstance(new Locale.Builder().setRegion("RU").build()).getGroupingSeparator());
结果是:
en-US: ,
de-DE: .
de-US: .
de: .
DE: ,
ru-RU: 0x160
RU: ,
因为de-US
它表示一个点作为分隔符,它代表德语的分隔符,而不是美国的分隔符。好像它只考虑了语言标签。
如果我创建一个只有国家信息(缺少语言)的语言环境,似乎总是返回英文分隔符格式。
我该如何正确解决这个问题?我想要语言环境中最具体信息的格式。因为de
,我想要德国的。因为de-US
我想要英文格式。