为什么Apache Commons认为“१२३”是数字?

根据Apache Commons Lang的StringUtils.isNumeric()文档,字符串“१२३”是数字。

由于我认为这可能是文档中的错误,因此我运行了测试来验证该语句。我发现根据Apache Commons,它是数字。

为什么此字符串是数字?这些字符代表什么?


答案 1

因为“CharSequence只包含Unicode数字”(引用您链接的文档)。

对于 Character.isDigit,所有字符都返回 true:

某些包含数字的 Unicode 字符范围:

  • “\u0030”到“\u0039”,ISO-LATIN-1 数字(“0”到“9”)
  • “\u0660”到“\u0669”,阿拉伯-印度数字
  • “\u06F0”到“\u06F9”,扩展的阿拉伯语-印度数字
  • “\u0966”到“\u096F”,梵文数字
  • “\uFF10”到“\uFF19”,全角数字

许多其他字符范围也包含数字。

१२३是梵文数字:


答案 2

符号१२३与尼泊尔语或任何其他使用梵文(如印地语,古吉拉特语等)的语言的123相同,因此是Apache Commons的数字。


推荐