Недавно я применил метод подсчета гласных в заданной строке и смог решить его довольно просто, но мое решение сравнивалось с лучшими практиками, и оно было лучшим:
public class Vowels {
public static int getCount(String str) {
return str.replaceAll("(?i)[^aeiou]", "").length();
}
}
... что гораздо элегантнее того, что я написал, и я пытаюсь понять это. Я не понимаю, что именно делает часть «(? I) [^ aeiou]». Я понял, что он удаляет все символы, которые не являются гласными, но я не понимаю, что делают операторы или почему они работают в кавычках, разве программа не должна рассматривать это как строку?