只是数字字符串

时间:2018-08-24 21:02:07

标签: java string double

我有随机生成的字符串(例如138fj*28+/dg)。

如何测试给定的字符串是否仅由数字组成。例如,

if(str="247339")
    true; 
else if(str="a245")
    false; 

3 个答案:

答案 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