java - 检查字符串是否仅包含数字,然后仅当它不包含数字以外的字符时才设置它

标签 java for-loop

/**
 * 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()

检查后,如果onlyDigitstrue,则可以分配它。

if (onlyDigits)
    this.mobile = mobile;

关于java - 检查字符串是否仅包含数字,然后仅当它不包含数字以外的字符时才设置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302458/

相关文章:

java - (JNI) 使用GetMethodID获取Java方法的内存地址

谁能弄清楚为什么我的循环不能正常工作

c# - For循环奇偶数

c - For 循环交替 printf

java - Docx4J 不会替换占位符

java - 为什么 Google Gson.toJson 会丢失数据

java - Laravel exec() 在队列作业中

php - 使用php将数组值设置为变量

java - 打破Java中的for循环

java - 如何检查字符串数组特定单元格字符串的长度?