Подсчет гласных в струнном решении - PullRequest
0 голосов
/ 23 марта 2020

Недавно я применил метод подсчета гласных в заданной строке и смог решить его довольно просто, но мое решение сравнивалось с лучшими практиками, и оно было лучшим:

public class Vowels {

    public static int getCount(String str) {
        return str.replaceAll("(?i)[^aeiou]", "").length();
    }

}

... что гораздо элегантнее того, что я написал, и я пытаюсь понять это. Я не понимаю, что именно делает часть «(? I) [^ aeiou]». Я понял, что он удаляет все символы, которые не являются гласными, но я не понимаю, что делают операторы или почему они работают в кавычках, разве программа не должна рассматривать это как строку?

1 Ответ

1 голос
/ 23 марта 2020

Это регулярное выражение, и оно в основном игнорирует регистр, потому что мы предоставляем только набор [aeiou], но он также должен совпадать с прописными [AEIOU]. Затем символ ^ используется для замены всех символов пустой строкой "", кроме гласных (независимо от их регистра).

(?i)   - starts case-insensitive mode

(?-i)  - turns off case-insensitive mode

[^...] - NOT ONE of these characters.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...