Гласные и согласные с регулярным выражением - PullRequest
0 голосов
/ 03 марта 2019

Я хочу удалить слова из входной строки, которые содержат больше гласных, чем согласных.Я хочу использовать для этого регулярное выражение, кто-нибудь может дать мне какой-нибудь совет?

Input: eef geggughhht oaiu hjekloykj
Output: geggughhht hjekloykj

вот мой псевдокод

String str = "eef geggughhht oaiu hjekloykj";

Pattern pattern = Pattern.compile("[aeiou]+");

for (String ch : str.split(" ")) {
    Matcher matcher = pattern.matcher(ch);
    int countVowels = 0;
    int countConsonants = 0;
    for(int i = 0; i < ch.length(); i++) {
        if(matcher.find(i)){
            countVowels++;
        } else {
            countConsonants++;
        }
    }
    if (countVowels > countConsonants){
        System.out.println();
    } else {
        System.out.println(ch);
    }
}

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете использовать этот подход:

String str = "eef geggughhht oaiu hjekloykj";
final Pattern p = Pattern.compile("[aeiou]+", Pattern.CASE_INSENSITIVE); 

String[] arr = str.split("\\s+");
for (int i=0; i<arr.length; i++) {
    String cstr = p.matcher(arr[i]).replaceAll("");
    if ( cstr.length() >= (arr[i].length() - cstr.length()) ) {
        System.out.println(arr[i]);
    }
}

Вывод:

geggughhht
hjekloykj

Используя этот подход, мы удаляем все гласные в каждом слове строки и затем сравниваем оставшуюся строку (com [поднимаются все согласные) длина с гласной струной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...