/**
* Set the person's mobile phone number
*/
public void setMobile(String mobile) {
for (int i = 0; i < mobile.length(); i++) {
if (!Character.isDigit(mobile.charAt(i))) {}
}
this.mobile = mobile;
}
所以我基本上需要确保字符串只包含数字,如果它包含非数字,则该方法什么都不做。 我遇到的问题是,如果一串数字中有一个随机字符,即“034343a45645”,它仍然会设置该方法。 感谢任何帮助,谢谢!
最佳答案
您可以使用String.matches(String regex)
:
boolean onlyDigits = mobile.matches("[0-9]+");
使用 for 循环,您可以在发现非数字时中断。
boolean onlyDigits = true;
for (int i = 0; i < mobile.length(); i++) {
if (!Character.isDigit(mobile.charAt(i))) {
onlyDigits = false;
break;
}
}
您也可以直接返回,而不是跳出循环。听起来你不希望之后发生任何其他事情。从而消除了对 onlyDigits
变量的需求。
请注意,如果 mobile.length() == 0
则相对于上述 for 循环,onlyDigits
仍为 true
。因此,假设如果 mobile
是空字符串,则 onlyDigits
应该为 false
,那么您可以这样初始化它:
boolean onlyDigits = !mobile.isEmpty()
检查后,如果onlyDigits
为true
,则可以分配它。
if (onlyDigits)
this.mobile = mobile;
关于java - 检查字符串是否仅包含数字,然后仅当它不包含数字以外的字符时才设置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302458/