判斷字元串是不是數字,大家可能會用一些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
{
//發生了異常,那麼就不是數字了。
}