关于java:如何确定字符串是否包含整数?

How to determine whether a string contains an integer?

假设您有一个要测试的字符串,以确保它包含一个整数,然后再继续处理其他代码。在Java中,你会用什么来找出它是否是一个整数?


如果您想确保它只是一个整数并将其转换为一个整数,我将在try/catch中使用parseint。但是,如果要检查字符串是否包含数字,则最好使用string.matches和正则表达式:stringVariable.matches("\\d")


您可以检查以下内容是否正确:"yourStringHere".matches("\\d+")


1
2
3
4
5
6
7
String s ="abc123";
for(char c : s.toCharArray()) {
    if(Character.isDigit(c)) {
        return true;
    }
}
return false;


我使用字符串类中的matches()方法:

4

这样,您还可以验证数字的范围是否正确。


这应该有效:

1
2
3
4
5
6
7
public static boolean isInteger(String p_str)
{
    if (p_str == null)
        return false;
    else
        return p_str.matches("^\\d*$");
}

你可以一直用谷歌的番石榴

1
2
3
String text ="13567";
CharMatcher charMatcher = CharMatcher.DIGIT;
int output = charMatcher.countIn(text);


您可能还想看看java.util.scanner

例子:

1
new Scanner("456").nextInt

  • 用户正则表达式:

    Pattern.compile("^\\s*\\d+\\s*$").matcher(myString).find();

  • 只需按try/catch包装integer.parse()(numberFormatException)


  • 1
    2
    3
    4
    5
    int number = 0;
    try {
       number = Integer.parseInt(string);
    }
    catch(NumberFormatException e) {}


    您可以使用apache stringutils.isnumeric。


    如果只想测试,如果字符串只包含整数值,请编写如下方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public boolean isInteger(String s) {
      boolean result = false;
      try {
        Integer.parseInt("-1234");
        result = true;
      } catch (NumberFormatException nfe) {
        // no need to handle the exception
      }
      return result;
    }

    parseInt将返回int值(本例中为-1234)或引发异常。


    使用integer.parseint()方法,网址为http://docs.oracle.com/javase/10/docs/api/java/lang/integer.html