繁体   English   中英

java-字符串验证

[英]java- String validation

我需要测试输入的字符串不是整数还是至少包含五个英文字母,我知道如何使用循环来实现它,但是我认为它会影响代码的效率,能否请你告诉我还有其他有效的方法吗?

例如:

  11111111 //ERROR(Whole number)
  1111aa11  //ERROR(less than 5 English alphabets)
  aAAAAA11  //TRUE

这是一个O(n)问题...没关系,您将需要检查字符串中的每个字符以查看其是否为数字或字母字符。 如果您根据已知字母和/或数字数组检查每个字符,则可能会不小心将其变成O(n ^ 2)或O(mn)问题。 但是,如果您只是使用哈希表或某种ASCII规范化方法,则这应该是O(n)解决方案,并且实际上不能使其更快。 如果您希望收到有关其实现效率的评论,请发布代码。

您可以进行正则表达式,例如[a-zA-Z]{5,}|[\\\\d]+

首先将其放入布尔方法。 如果返回true,则为数字,否则为有效。 请参见下面的示例:

 public boolean validateInput(String x) {

    try {

        Integer.parseInt(x);

    } catch (NumberFormatException ex) {
        return false;
    }

    return true;
}

根据我对您问题的理解,

寻找字符串的长度吗? 然后,您可以使用字符串的.length()。

您还可以使用Integer.parseInt(string)检查数字是否为整数。

您应该尝试使用正则表达式,例如,要测试给定的字符串是否为数字,可以使用以下方法:

String t = "222x";
String pattern2 = "(\\d+)";     
System.out.println(java.util.regex.Pattern.matches(pattern2, t));

由于字符串包含“ x”,将失败,请删除x并返回true。 对于其他情况,您可以尝试相同的方法。

希望这是您正在寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM