java-字符串验证

时间:2011-11-29 06:10:00

标签: java

我需要测试作为输入给出的字符串是不是整数还是至少包含五个英文字母。我知道如何使用loop实现它。但我认为它会影响我的代码的效率。可以请告诉我任何其他有效的方法吗?

例如:

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

5 个答案:

答案 0 :(得分:4)

这是一个O(n)问题...不管你做什么,你将不得不检查字符串中的每个字符,以查看它是数字还是字母字符。如果要针对已知字母和/或数字的数组检查每个字符,您可能会意外地将其转换为O(n ^ 2)或O(mn)问题。但是如果你只是使用哈希表或一些ASCII规范化方法,那么这应该是一个O(n)解决方案,并且实际上不能更快。如果您希望收到有关其实施效率的评论,请发布您的代码。

答案 1 :(得分:1)

你可以做一个正则表达式,例如像[a-zA-Z]{5,}|[\\d]+

这样的东西

答案 2 :(得分:0)

根据我对你的理解,

正在寻找获得字符串的长度?然后你可以使用字符串的.length()。

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

答案 3 :(得分:0)

你应该尝试正则表达式,例如,测试一个给定的字符串是一个数字,以下可能有效:

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

哪个会失败,因为字符串包含'x',删除x并返回true。你可以尝试相同的另一种情况。

希望这就是你要找的东西。

答案 4 :(得分:0)

首先将它放在布尔方法中。如果返回true,则为数字,否则为有效。见下面的例子:

 public boolean validateInput(String x) {

    try {

        Integer.parseInt(x);

    } catch (NumberFormatException ex) {
        return false;
    }

    return true;
}