如果我在FRANCE / FRENCH语言环境中转换数字,则应使用空格作为千位分隔符。如果我尝试用其他字符替换空格,则找不到任何空格。
String input = NumberFormat.getNumberInstance(Locale.FRANCE).format(123123123);
System.out.println("String after conversion in locale "+input);
input = input.replace(" ", ".");
System.out.println("After replace space with dot "+input);
输出
String after conversion in locale 123 123 123
After replace space with dot 123 123 123
因此虽然分隔符看起来像空格,但它是不同的东西。什么是确切的字符?如何在input.replace()中指定该字符,以便我可以用点?
替换它答案 0 :(得分:9)
\u00a0
不间断的空间,对于金额来说是有意义的。 (想象一下,在一行结束时为40欧元,下一行以000开头。)对其他一些语言也是如此。
input = input.replace('\u00a0', '.');
答案 1 :(得分:3)
正如Joop Eggen在他的回答中所建议的那样\u00a0
是不间断的空间。
作为一种解决方法,我得到了千分隔符如下
String input = NumberFormat.getNumberInstance(Locale.FRANCE).format(123123123);
System.out.println("String after conversion in locale "+input);
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRANCE);
DecimalFormatSymbols symbols = df.getDecimalFormatSymbols();
char thousandSep = symbols.getGroupingSeparator();
input = input.replace(thousandSep, '.');
按预期工作
String after conversion in locale 123 123 123
After replace space with dot 123.123.123