【问题标题】:How can I have my token accept numbers with decimals如何让我的令牌接受带小数的数字
【发布时间】:2014-03-30 04:47:52
【问题描述】:
if (tokens[i].matches("[0-9]+"))

这使得它目前只能读取整个整数,直到出现空格,我如何让它也读取小数?

【问题讨论】:

    标签: java regex token


    【解决方案1】:

    添加可选的小数部分:

    if (tokens[i].matches("[0-9]*([.][0-9]+)?"))
    

    使用星号使整数部分可选。然而,这个表达式的问题在于它现在可以匹配一个空字符串。更好(但更长)的表达式将匹配一个单独的子表达式中以小数点开头的字符串,如下所示:

    if (tokens[i].matches("[0-9]+([.][0-9]+)?|[.][0-9]+"))
    

    【讨论】:

    • 如果我想以小数开头,那会起作用吗?还有什么是“?”对于
    • @user3427042 将整数部分的[0-9]+(1 或更多)更改为[0-9]*(0 或更多)。
    • @user3427042 表达式后的问号使前面的表达式可选。在这种情况下,[.][0-9]+ 是可选的。
    【解决方案2】:

    试试这个:

    if (tokens[i].matches([0-9]+(\.[0-9][0-9]?)?)
    

    【讨论】:

    • 只有两位小数就可以了。 PS:你错过了引号。
    猜你喜欢
    • 2018-01-15
    • 2015-12-30
    • 2017-09-27
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多