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

时间:2016-07-25 21:08:29

标签: java apache-stringutils

我正在阅读commons.apache.org isNumeric方法定义,并说明:

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

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

  • "?"被视为unicode数字
  • 这是某种正则表达式

isNumeric Method Definition

2 个答案:

答案 0 :(得分:9)

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

SELECT 
    qryIntervals.STF_GRP_SK, 
    DateAdd("n", 30 * tblNumbers.n, qryIntervals.START) AS dtmSTART, 
    DateAdd("n", 30 * (tblNumbers.n + 1), qryIntervals.START) AS dtmEND, 
    qryIntervals.TLY 
FROM qryIntervals, tblNumbers 
WHERE 
    DateAdd("n", 30 * tblNumbers.n, qryIntervals.START) < qryIntervals.END

u0967,u0968,u0969分别为Devangari Digits一,二,三。 这可能是一个浏览器问题,导致无法在API中正确呈现字符。

答案 1 :(得分:3)

查看代码,示例是

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

\u0967,即“梵文数字一”

\u0967,即“梵文数字二”

所以他们是数字!