如何检查String是否包含数值

时间:2012-12-02 21:34:19

标签: java char

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

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

循环遍历字符串并查看它是否包含任何数字。我试图创建一个检查String是否为数字的方法,如果该方法应返回true。到目前为止,它不起作用?任何帮助将不胜感激:)

7 个答案:

答案 0 :(得分:9)

您可以使用regexp检查:

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

至少有两种选择可以避免显式循环,正则表达式(已经建议)并尝试在try-catch中转换为适当的类型。

例如,如果需要整数,请调用Integer.parseInt并捕获NumberFormatException。如果发生异常,则返回false。如果没有,返回true。转换策略对于更复杂的格式尤其有用,例如double。

答案 4 :(得分:0)

你可以像

这样的东西
String numbers = "0123456789"
if(numbers.indexOf(roomNo.charAt(character)) >= 0)
...

答案 5 :(得分:0)

试试这个:

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

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

答案 6 :(得分:0)

我建议使用Apache Commons的NumberUtils

Apache Commons isNumber(String)

Apache Commons isDigits(String)

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