Существует также множество способов без использования регулярных выражений.
В этом случае нельзя использовать String::contains
, поскольку этот метод работает с определенной последовательностью символов и ваш вариант использования слишком конкретен c. Тем не менее, вы можете использовать преимущество List::contains
, которое может быть более полезным, если понимать под String
как List<Character>
, используя java -stream :
List<Integer> characters = "RBGPYO".chars()
.boxed()
.collect(Collectors.toList());
boolean matches = guess.length() == 4 &&
guess.toUpperCase().chars().allMatch(characters::contains);
Если вы не являетесь поклонником этой функции, старый добрый способ для -l oop:
List<Character> characters = Arrays.asList('R', 'B', 'G', 'P', 'Y', 'O');
boolean matches = guess.length() == 4;
if (matches) {
for (char ch : guess.toUpperCase().toCharArray()) {
if (!characters.contains(ch)) {
matches = false;
break; // it's important to break the cycle
}
}
}
В любом случае, важно, чтобы проверьте длину, прежде чем проверять символы . Это действительно до тех пор, пока guess
должен содержать символы и иметь определенную длину.