【问题标题】:How do I check if a String contains a numeric value如何检查字符串是否包含数值
【发布时间】:2012-12-02 21:34:19
【问题描述】:

您好,基本上我尝试使用此代码

    for(int character=0; character<roomNo.length(); character++){
        if((Character.isDigit(roomNo.charAt(character)))) {
        }
    }
    return true;

遍历一个字符串并查看它是否包含任何数字。我正在尝试创建一个方法来检查字符串是否为数字,如果是,则该方法应返回 true。到现在还不行?任何帮助将不胜感激:)

【问题讨论】:

  • “数值”是什么意思?你认为-2.3 是一个数值吗?你的意思是一个严格的正整数吗?

标签: java char


【解决方案1】:

您可以使用正则表达式检查:

roomNo.matches("\\d+");

【讨论】:

  • @A.R.S.这里发生了一些神秘的过程:)
【解决方案2】:

为什么不直接做roomNo.matches("\\d+")

\d 匹配任何数字,因此,\d+ 匹配任何只有数字的字符串。

【讨论】:

  • 可怜的 bellum 是第一个指出这一点的人,而且支持的人更少:p
  • @Keyser 我一开始错过了一个重要角色:)
【解决方案3】:

因为它是一个房间号,我假设你正在寻找一个整数,所以我推荐 Integer.parseInt()。

【讨论】:

  • 谁说房间不超过 2,147,483,647 间? :-)
  • 仅使用parseInt 来验证字符串是笨拙的,并且验证失败会导致异常机制的额外成本。
【解决方案4】:

这种验证的显式循环的通常形式是:

for each character in the string
  if not acceptable
    return false
return true

至少有两种替代方法可以避免显式循环,即正则表达式(已建议)和尝试在 try-catch 中转换为适当的类型。

例如,如果您想要一个整数,请调用 Integer.parseInt 并捕获 NumberFormatException。如果发生异常,则返回 false。如果不是,则返回 true。转换策略对于更复杂的格式尤其有用,例如双精度。

【讨论】:

    【解决方案5】:

    试试这个:

        for(int character=0; character<roomNo.length(); character++){
        if(!Character.isDigit(roomNo.charAt(character))) {
             return false;
        }
    }
    return true;
    

    或者正如其他人所说,使用正则表达式

    【讨论】:

    • 这里的循环将返回true一旦它看到一个数字。
    • 我修改了它。当我阅读“遍历字符串并查看它是否包含任何数字”时,我想他想知道字符串是否包含任何数字,而不仅仅是数值
    • 这个最容易工作,这是否意味着如果它找到一个字母它将返回false。基本上我正在尝试检查一个 3 字符的字符串,它的数字是否以及它的某些部分是否在一定范围内。
    • 我正在检查字符串,如果它包含一个字母,该方法必须返回 false。
    • 是的,就是这个意思。如果要检查字符串的某些部分,可以对该字符串的某些子字符串使用 Integer.parseInt() 方法来获取值。它是这样的: Integer.parseInt(myString.substring(0,1)) 。这是如果您想检查该数字字符串的某些部分是否在某个范围内。如果要分别取数字,只需使用 charAt() 方法并记住数字 0 的 ASCII 码为 48。如果要检查它是否包含单个字母,请使用 isLetter() 方法。
    【解决方案6】:

    你可以这样

    String numbers = "0123456789"
    if(numbers.indexOf(roomNo.charAt(character)) >= 0)
    ...
    

    【讨论】:

      【解决方案7】:

      我建议使用 Apache Commons 的 NumberUtils

      Apache Commons isNumber(String)

      Apache Commons isDigits(String)

      个人偏好是使用经过验证的实现,而不是自己动手。

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        • 2017-09-23
        • 2013-11-20
        相关资源
        最近更新 更多