Java FRANCE/FRENCH 区域设置千位分隔符看起来像 space 但实际上不是
Java FRANCE/FRENCH Locale thousands separator looks like space but not actually
如果我在 FRANCE/FRENCH 语言环境中转换数字,它应该使用 space 作为千位分隔符。如果我尝试用其他字符替换 space,它找不到任何 space。
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
因此,虽然分隔符看起来像 space,但实际上有所不同。确切的字符是什么?如何在 input.replace() 中指定该字符,以便我可以用点替换它?
是\u00a0
不间断的space,对一个量来说是有意义的。 (假设 40 欧元在一行的末尾,下一行以 000 开头。) 其他一些语言也是如此。
input = input.replace('\u00a0', '.');
正如 Joop Eggen 在他的回答中所建议的 \u00a0
不间断 space。
作为解决方法,我得到了如下的千位分隔符
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
如果我在 FRANCE/FRENCH 语言环境中转换数字,它应该使用 space 作为千位分隔符。如果我尝试用其他字符替换 space,它找不到任何 space。
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
因此,虽然分隔符看起来像 space,但实际上有所不同。确切的字符是什么?如何在 input.replace() 中指定该字符,以便我可以用点替换它?
是\u00a0
不间断的space,对一个量来说是有意义的。 (假设 40 欧元在一行的末尾,下一行以 000 开头。) 其他一些语言也是如此。
input = input.replace('\u00a0', '.');
正如 Joop Eggen 在他的回答中所建议的 \u00a0
不间断 space。
作为解决方法,我得到了如下的千位分隔符
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