java字符串验证
我需要测试作为输入的字符串是否不是整数或至少包含五个英文字母。我知道如何使用循环实现它。但我认为这会影响我代码的效率。你能告诉我其他有效的方法吗 例如:java字符串验证,java,Java,我需要测试作为输入的字符串是否不是整数或至少包含五个英文字母。我知道如何使用循环实现它。但我认为这会影响我代码的效率。你能告诉我其他有效的方法吗 例如: 11111111 //ERROR(Whole number) 1111aa11 //ERROR(less than 5 English alphabets) aAAAAA11 //TRUE 根据我对你问题的理解 您正在查找以获取字符串的长度?然后可以使用字符串的.length() 您还可以使用Integer.parseInt(
11111111 //ERROR(Whole number)
1111aa11 //ERROR(less than 5 English alphabets)
aAAAAA11 //TRUE
根据我对你问题的理解 您正在查找以获取字符串的长度?然后可以使用字符串的.length()
您还可以使用Integer.parseInt(string)检查数字是否为整数。您应该尝试使用正则表达式,例如,要测试给定字符串是否为数字,以下操作可能有效:
String t = "222x";
String pattern2 = "(\\d+)";
System.out.println(java.util.regex.Pattern.matches(pattern2, t));
这将失败,因为字符串包含一个“x”,删除x,它将返回true。你可以试着用同样的方法处理另一个案子
希望这就是你想要的。你可以做一个正则表达式,例如类似于
[a-zA-Z]{5,}|[\\d]+
这是一个O(n)问题。。。不管你做什么,你必须检查字符串中的每个字符,看看它是数字还是字母字符。如果根据已知字母表和/或数字数组检查每个字符,可能会意外地将此问题转化为O(n^2)或O(mn)问题。但是如果您只是使用一个哈希表,或者一些ASCII规范化方法,那么这应该是一个O(n)解决方案,并且不能使速度更快。如果您希望收到关于代码实现效率的评论,请发布代码。首先将其放在布尔方法中。如果返回true,则为数字,否则为有效。见下例:
public boolean validateInput(String x) {
try {
Integer.parseInt(x);
} catch (NumberFormatException ex) {
return false;
}
return true;
}
您当前有什么代码?整数还是包含字符?您希望验证字符串的目的是什么?数字还是字符?都是。。我需要检查字符串是整数还是包含少于5个字母。如何获取输入?文本字段?你的问题是“一个整数或至少五个字母”,但在你的例子中,你说“11111111”是一个整数的错误。你能澄清一下吗?是的,但是regex仍然是一个O(n)实现。这只是在幕后为你做些肮脏的工作。:)@ElfsЯUs,当然,很好的观点,但正如你所说,你可能能做的最好的事情是O(n),避免陷入做O(mn)的陷阱。与嵌套循环IMHO相比,正则表达式更干净,更易于维护。