Мне нужно проверить, содержит ли строка только один отдельный символ из данного класса символов. Несколько простых примеров:
"aa", "bbbbb", "c"
соответствует этому регулярному выражению [abc]+
, но регулярное выражение также соответствует "abbb" or "abcbb"
, что недопустимо в моем случае. Поэтому я не могу его использовать.
Пример кода:
String[] input = {"a", "aaa", "ab", "b", "bbbb", "abc", "ccc"};
for(String str :input){
if(str.matches("[abc]+")){
System.out.println(str + ": valid");
}
else {
System.out.println(str + ": not valid");
}
}
Выше будет напечатано действительное значение для каждой строки из входного массива, а это не то, что мне нужно. Допустимыми являются только строки с различными символами. Я могу добиться этого следующим образом, где мне нужно использовать несколько or
в операторе if.
for(String str :input){
if(str.matches("[a]+")||str.matches("[b]+")||str.matches("[c]+")){
System.out.println(str + ": valid");
}
else {
System.out.println(str + ": not valid");
}
}
Как мне достичь того же результата, что и во втором подходе, но записать его компактно, потому что это будет не будет читаемым, когда класс персонажа растет и происходят изменения в классе персонажа. Мне нужно изменить условие if?
Ожидается:
a: valid
aaa: valid
ab: not valid
b: valid
bbbb: valid
abc: not valid
ccc: valid