我需要检测用户号码不应该包含字符。
我知道这个方法:
public boolean haveDigit(String str) {
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) return true;
}
return false;
}
还有其他更好更简单的解决方案吗?
答案 0 :(得分:2)
你可以在这里使用正则表达式。目前,您的代码正在测试字符串是否包含至少一个数字。如果您需要,可以使用:
// Modification of your code. Test string contains at least 1 digit
public boolean haveDigit(String str) {
return !str.replaceAll("\\D+", "").isEmpty();
}
但是根据你的文字,你想测试字符串是否只包含一个数字。为此你可以使用:
// Test is string only contains digit and no other character
public boolean isDigit(String str) {
return str.matches("\\d+");
}
答案 1 :(得分:1)
public boolean isNumeric(String num)
{
try
{
Integer.parseInt(num);
return true;
}
catch(NumberFormatException e)
{
return false;
}
}
答案 2 :(得分:1)
使用Pattern类和正则表达式。 此方法等于您的方法。
public boolean haveDigit(String str)
{
Pattern p = Pattern.compile(".*[0-9].*");
Matcher m = p.matcher(str);
return m.matches();
}
测试
haveDigit("d9h"); //true
haveDigit("d9agh6"); //true
haveDigit("hello"); //false
下一个方法检查你的要求
public boolean isNumeric(String str)
{
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(str);
return m.matches();
}
测试
isNumeric("r5t"); // false
isNumeric("100"); // true
isNumeric("0.5"); // false
答案 3 :(得分:1)
如何(OP编辑后的更新版本)
if (str.matches("\\D+")){
// str contains only non-digits characters
// and its length is one or more.
// If user wants also to accepts empty strings instead '+' should use '*'
}else{
// str contains digit (or is empty if we used '+')
}
答案 4 :(得分:0)
Integer.parseInt(String)
怎么看整数是否存在。
public boolean checkNumeric(String str) {
try {
Integer.parseInt(str); // parse to check if the integer is an integer
return true;
} catch (NumberFormatException ne) {
return false;
}