天天看點

判斷字元串是不是數字

判斷字元串是不是數字,大家可能會用一些java自帶的方法,也有可能用其他怪異的招式,比如判斷是不是整型數字,将字元串強制轉換成整型,不是數字的就會抛出錯誤,那麼就不是整型的了。

1。java類庫自帶的方法:

isDigit 隻能作用于char,是以判斷字元串是否為數字,要一個一個拿出char進行判斷

public static boolean isNumeric(String str){

        for (int i = str.length();--i>=0;){

             if (!Character.isDigit(str.charAt(i))){

                     return false; 

             }

         }

        return true;

}

2。用正規表達式

首先要import java.util.regex.Pattern 和 java.util.regex.Matcher

這兩個包,接下來是代碼

public boolean isNumeric(String str){

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

       Matcher isNum = pattern.matcher(str);

       if( !isNum.matches() ){

              return false;

        }

       return true;

}

3.還是正規表達式

public static boolean isNumeric(String str){

if(str.matches("\\d*"){

return true;

}else{

return false;

}

}

4.用ascii碼

public static boolean isNumeric(String str){

for(int i=str.length();--i>=0;){

int chr=str.charAt(i);

if(chr<48 || chr>57)

return false;

}

return true;

} 5、 string str="123";

int val;

if(int.TryParse(str,out val))

{

 //是int數字

}

else

 {

 // 不是數字

 } 6、 string input1 = "1231.23"; string input2 = "123123"; bool isDecimal = Regex.IsMatch(input1, @"^[-]?\d+[.]?\d*$"); bool isNunber = Regex.IsMatch(input2, @"^[-]?[0-9]*$");

7、速度最快

public static bool IsNum(String str)

{

    for(int i=0;i<str.Length;i++)

    {

        if(!Char.IsNumber(str,i))

        return false;

    }

    return true;

}

  或用正規表達式:"^\d+$"

  還可以用Int32.Parse()抛出的Exception來判斷:

try

{

    Int32.Parse(toBeTested);

}

catch

{

    //發生了異常,那麼就不是數字了。

}