我最近写了一个判断字符串中的一个字符是不是数字的程序,采用了判断ASCII码的方法,代码如下:
public boolean check(String str)//输入合法性检测模块
{
int i=0;
char point = str.charAt(i);
for(i=0;i<str.length() && point!='.';i++)
{
point= str.charAt(i); if(Integer.valueOf(point)<48 || Integer.valueOf(point)>57) //采用判断ASCII码的方法来判别是不是数字
{
System.out.println("输入非法!");
return false;
}
}
return true;
}
虽然运行结果正确了,但是总觉得不太安全,担心换一个操作系统之后结果会不正确,也觉得效率好像不高。请问还有没有更安全、移植性好并且更替高效的方法?
public boolean check(String str)//输入合法性检测模块
{
int i=0;
char point = str.charAt(i);
for(i=0;i<str.length() && point!='.';i++)
{
point= str.charAt(i); if(Integer.valueOf(point)<48 || Integer.valueOf(point)>57) //采用判断ASCII码的方法来判别是不是数字
{
System.out.println("输入非法!");
return false;
}
}
return true;
}
虽然运行结果正确了,但是总觉得不太安全,担心换一个操作系统之后结果会不正确,也觉得效率好像不高。请问还有没有更安全、移植性好并且更替高效的方法?
好像也是哦,忘记还有JVM的存在了……
那么还有什么更高效的办法吗?
应该用Character.isDigit()来判断。
public static boolean isDigit(char c) {
return c >= '0' && c <= '9';
}
char[] ch = ctr.toCharArray();
for(int i = 0 ; i < ch.length;i++){
if(Character.isDigit(ch[i])){
System.out.println("输入非法");
return false;
}
}
return true;
}
正则表达式的如下,是一个方法:
public static boolean isNumeric(String str) {
Pattern pa = Pattern.compile("[0-9]*");
return pa.matcher(str).matches();
}
记得要导入java.util.regex.*这个包。。
{
if (s!=null && s!="")
{
return !isNaN(s);
}
return false;
}或者正则表达式
合理的方法用isDigit()或者isNumeric判断(一般懒得写正则都用这个,但是一般过滤条件单一,适应能力差)
lz的方法也是一种。大多数时候都是可以的。下面举例最笨的方法
强制转换 将String强制转换成想要判断的类型,成为为正常,有异常时就不是该类型。(O(∩_∩)O哈哈~ 这个方法太绝了 乐死我了)