我正在尝试检查分组分隔符(char
)是否为空格。这是法语区域设置的情况,但我的测试始终打印false
。
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.forLanguageTag("fr"));
char ch = formatter.getDecimalFormatSymbols().getGroupingSeparator();
System.out.println(ch == ' '); // false
System.out.println(Character.isWhitespace(ch)); // false
答案 0 :(得分:6)
您收到的unicode符号不是普通空白。这是一个不间断的空间。您的字符的整数表示为 160 而不是 32 。 要检查您是否应该使用:
Character.isSpaceChar(ch);
该方法根据unicode标准检查字符是否为空格
以下方法根据Java规范检查charactre是否为空格。
Character.isWhitespace(ch);
有关标准的详细说明,请参阅文件。
答案 1 :(得分:0)
分组字符不是空格,而是160.这将输出true和true
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.forLanguageTag("fr"));
char ch = formatter.getDecimalFormatSymbols().getGroupingSeparator();
System.out.println(ch == 160);
System.out.println(Character.isSpaceChar(ch));
答案 2 :(得分:0)
这是一个不间断的空间
getGroupingSeparator()
返回非破坏空间。所以你可以用特定的非破坏空间unicode来检查它。
public static void main(String[] args) {
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.forLanguageTag("fr"));
char ch = formatter.getDecimalFormatSymbols().getGroupingSeparator();
System.out.println(formatter.getDecimalFormatSymbols().getGroupingSeparator() == '\u00A0'); // true
System.out.println(ch == ' '); // false
System.out.println(Character.isWhitespace(ch)); // false
}