我有随机生成的字符串(例如138fj*28+/dg
)。
如何测试给定的字符串是否仅由数字组成。例如,
if(str="247339")
true;
else if(str="a245")
false;
答案 0 :(得分:1)
尝试使用Pattern类的matchs方法
boolean b = Pattern.matches("\\d+", "138fj*28+/dg");
if(b)
//number
else
// not a number
答案 1 :(得分:1)
您可以在String中使用match方法。 例如
System.out.println("Only integer 23343453 :"+("23343453".matches("\\d+")));
System.out.println("With character 2334a3453 :"+("2334a3453".matches("\\d+")));
System.out.println("With symbols 2*33434/53 :"+("2*33434/53".matches("\\d+")));
or
System.out.println("Only integer 23343453 :"+("23343453".matches("[0-9]+")));
System.out.println("With character 2334a3453 :"+("2334a3453".matches("[0-9]+")));
System.out.println("With symbols 2*33434/53 :"+("2*33434/53".matches("[0-9]+")));
输出:
Only integer 23343453 :true
With character 2334a3453 :false
With symbols 2*33434/53 :false
Only integer 23343453 :true
With character 2334a3453 :false
With symbols 2*33434/53 :false
答案 2 :(得分:0)
您有两种选择,一种是使用正则表达式,另一种是解析字符串。
这是正则表达式方法:
public class Main {
public static void main(String[]args) {
Pattern pattern = Pattern.compile("^[0-9]*$");
Matcher matcher = pattern.matcher("138fj*28+/dg");
if (matcher.matches()) {
System.out.println(true);
// number
}else {
System.out.println(false);
// not
}
}
}
输出为:false
这里是解析方法:
public class Main {
public static void main(String[]args) {
try {
double number = Double.parseDouble("138fj*28+/dg");
System.out.println(true);
// number
}catch (NumberFormatException ex) {
System.out.println(false);
// not
}
}
}
输出为:false