0

我有一个if语句检查变量是否等于某个字符串。但是,我也想检查字符串中是否有数字。像这样的东西:

if(thestring.equals("I, am awesome. And I'm " + Somehowgetifthereisanumberhere + " years old")) {
    //Do stuff
}

或者更具体地说,其中x是未知数,只是为了知道那里有一个数字(任何数字):

String str = item.substring(item.indexOf("AaAaA" + x), item.lastIndexOf("I'm cool."));

怎么做?

4

4 回答 4

5

使用正则表达式

if(thestring.matches("^I, am awesome. And I'm \\d+ years old$")) {
    //Do stuff
}
于 2013-05-21T18:39:16.940 回答
2

这个正则表达式应该在任何字符串中找到任何一位、两位或三位数字(如果他们是 102 岁):

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestClass {

public static void main(String[] args) {
    Pattern p = Pattern.compile("\\d\\d?\\d?");
    Matcher m = p.matcher("some string with a number like this 536 in it");
    while(m.find()){
        System.out.println(m.group());  //This will print the age in your string
        System.out.println(m.start());  //This will print the position in the string where it starts
    }
  }
}

或者这个来测试整个字符串:

Pattern p = Pattern.compile("I, am awesome. And I'm \\d{1,3} years old");  //I've stolen Michael's \\d{1,3} bit here, 'cos it rocks.
Matcher m = p.matcher("I, am awesome. And I'm 65 years old");
    while(m.find()){
        System.out.println(m.group());
        System.out.println(m.start());
}
于 2013-05-21T18:54:21.833 回答
2

您可以使用正则表达式。

Pattern pattern = Pattern.compile(".*[^0-9].*");

参考:

于 2013-05-21T18:41:29.980 回答
1

您想使用正则表达式。请参阅 -在 Java 中使用正则表达式提取值

匹配字母“d”、“e”或“f”,例如:

[a-z&&[def]]   

还有 -课程:正则表达式

花样课也很好学

于 2013-05-21T18:39:37.217 回答