检查分组分隔符是否为空格

时间:2016-08-12 08:27:10

标签: java char locale separator

我正在尝试检查分组分隔符(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

3 个答案:

答案 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
}