I am developing a student project and need to write a function to count syllables in word. The function is like long countSyllables(String word).
How to count syllables in word using Java? Any suggestions?
The provided rules are:
To count the number of syllables you should use letters a, e, i, o, u, y as vowels.
Count the number of vowels in the word.
Do not count double-vowels (for example, "rain" has 2 vowels but is only 1 syllable)
If the last letter in the word is 'e' do not count it as a vowel (for example, "side" is 1 syllable)
If at the end it turns out that the word contains 0 vowels, then consider this word as 1-syllable.
I had already write the function but I think it is not optimal. So I just would like to see other possible solutions. If any.
Full description for the task: https://hyperskill.org/projects/39/stages/208/implement
Current implementation:
public static int countSyllables(final String word) {
return max(1, word.toLowerCase()
.replaceAll("e$", "")
.replaceAll("[aeiouy]{2}", "a")
.replaceAll("[^aeiouy]", "")
.length());
}