实现对字符串进行校验的功能,校验规则如下: a)字符串长度必须超过10。 b)字符串必须包含大写字母、小写字母、数字、其他字符(不包括运算符)中至少3种。 c)字符串必须以字母开头。 d)字符串中不能存在长度超过3的重复子串。 用java实现
时间: 2024-05-11 08:16:51 浏览: 70
java代码-使用java输入一个长度不超过30的字符串然后再输入一个字符输出该字符在字符串中出现的次数的源代码
好的,我理解了你的要求。以下是Java代码实现:
```java
import java.util.HashSet;
import java.util.Set;
public class StringValidator {
public static boolean validate(String str) {
// 检查字符串长度
if (str.length() <= 10) {
return false;
}
// 检查字符串必须包含至少3种不同类型的字符
Set<Character> types = new HashSet<>();
for (char c : str.toCharArray()) {
if (Character.isUpperCase(c)) {
types.add('U');
} else if (Character.isLowerCase(c)) {
types.add('L');
} else if (Character.isDigit(c)) {
types.add('D');
} else if (!isOperator(c)) {
types.add('O');
}
}
if (types.size() < 3) {
return false;
}
// 检查字符串以字母开头
if (!Character.isLetter(str.charAt(0))) {
return false;
}
// 检查字符串中不存在长度大于3的重复子串
for (int i = 0; i < str.length(); i++) {
for (int len = 2; len <= 3 && i + len <= str.length(); len++) {
String sub = str.substring(i, i + len);
if (str.indexOf(sub, i + 1) >= 0) {
return false;
}
}
}
return true;
}
private static boolean isOperator(char c) {
return "+-*/=&|!><^%".indexOf(c) >= 0;
}
}
```
该方法接收一个字符串作为参数,返回一个布尔值表示该字符串是否符合校验规则。可以通过多个 if 语句逐一检查各项规则是否符合,其中包括字符串长度、字符类型、起始字符和重复子串。其中涉及较为复杂的逻辑比如重复子串的检测,需要使用两层循环来进行检测。
阅读全文