I'm using WordsUtils to capitalize words.
Since I can't define which words should be capitalized, I have to make another implementation after capitalize function to put some words lowercase.
The words that should be lowercase are: ["da, de, di, do, du, das, des, dis, dos, dus"].
So, my code at the moment is:
public static String capitalize(String word) {
String newWord = WordUtils.capitalizeFully(word);
newWord = newWord.replaceAll("\\b([d|D][a-zA-Z]{1,2})\\b", "$1").toLowerCase();
return newWord;
}
Example of inputs:
- josé dAs sIlVa
- Jorge De PAuLa
- MaRiA DAS PauLas
The problem is that the replaceAll is puttng every word lowercase , not only the prepositions that matches the Pattern.
.toLowerCase()does. You need to manipulate each match..toLowerCase()does, but I want to lowerCase only word that matches theRegex.