关于java:当输入为“???”时,StringUtils isNumeric返回true,为什么?

StringUtils isNumeric returns true when input is “???”, why?

本问题已经有最佳答案,请猛点这里访问。

我在读commons.apache.org isNumeric方法定义,它指出:

1
StringUtils.isNumeric("???") = true;

我不知道为什么"???"被认为是数字。我的猜测是:

  • "?"被认为是Unicode数字。
  • 它是某种正则表达式模式

isNumeric Method Definition


我通过查看isNumeric方法的StringUtils源代码找到了这个问题的答案。在源代码中,该行显示为:

1
StringUtils.isNumeric("\u0967\u0968\u0969")  = true

其中U0967、U0968、U0969分别是Devangari数字1、2和3。这可能是浏览器问题,导致在API中无法正确呈现字符。


看看代码,例子是

1
StringUtils.isNumeric("\u0967\u0968\u0969")  = true

\u0967?,为"天成文书(梵文)数字一"

\u0967?,是"天成文书(梵文)数字二"

所以它们是数字!