我在区域设置中的字符串格式中有一个不是'en_US'的小数。我想将它转换为'en_US'语言环境中的小数。
例如:“123.345.123,45” - > “123345123.45”或“123,345,123.45”
“123 345,45” - > “123345.45”或“123,345.45”
“123.345” - > “123345”或“123,345”
答案 0 :(得分:0)
似乎NumberFormat会做你正在寻找的东西。
在oracle文档中找到此代码段:
static public void displayNumber(Locale currentLocale) {
Integer quantity = new Integer(123456);
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String quantityOut;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
quantityOut = numberFormatter.format(quantity);
amountOut = numberFormatter.format(amount);
System.out.println(quantityOut + " " + currentLocale.toString());
System.out.println(amountOut + " " + currentLocale.toString());
}
此示例打印以下内容;它显示了相同数字的格式如何随区域设置而变化:
123 456 fr_FR
345 987,246 fr_FR
123.456 de_DE
345.987,246 de_DE
123,456 en_US 3
45,987.246 zh_CN
以下是内容来自的链接:
https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html
要将格式化的数字字符串从一个Locale转换为另一个Locale,您必须知道生成该字符串的Locale。从那里你可以使用NumberFormat.parse将字符串转换回Number。然后使用目标Locale创建另一个NumberFormat并使用.format方法更改字符串表示。
static public String displayNumber(String startValue, Locale startLocale, Locale endLocale) throws ParseException {
NumberFormat parser = NumberFormat.getNumberInstance(startLocale);
NumberFormat formatter = NumberFormat.getNumberInstance(endLocale);
Number rawNumber = parser.parse(startValue);
return formatter.format(rawNumber);
}