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

Java 检查分组分隔符是否为空格,java,char,locale,separator,Java,Char,Locale,Separator,我试图检查分组分隔符(char)是否为空格。法语地区也是如此,但我的测试总是打印false DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.forLanguageTag("fr")); char ch = formatter.getDecimalFormatSymbols().getGroupingSeparator(); System.out.println(ch == ' '); // fa

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

您收到的unicode符号不是一个正常的空白。这是一个无休止符的空间。字符的整数表示形式为160而不是32。 要检查您是否应该使用:

Character.isSpaceChar(ch);
该方法根据unicode标准检查字符是否为空格。

下面的方法根据Java规范检查字符是否是空格

Character.isWhitespace(ch);

标准的详细说明可在文档中找到。

分组字符不是空格,而是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));

这是不间断的空间

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
}

那么它是什么字符呢?我不知道,当我在调试中打印或检查它时,它是一个空格。要查看字符的unicode值,请尝试以下操作:谢谢,这肯定会有帮助哦,很好。你是怎么发现的?@CharlesFollet:很简单:System.out.println((int)ch);由于空格至少应在ASCII范围内,因此160使我感到困惑。所以我看了一下unicode表。以前也不知道有这样的空间。如果答案对你有帮助,请接受it@CharlesFollet你会接受这个答案让其他人知道这有帮助吗?