Я использую WordsUtils
до capitalize
слов.ReplaceAll в Java
Поскольку я не могу определить, какие слова должны быть капитализированы, я должен сделать другую реализацию после функции capize, чтобы поместить несколько слов в нижний регистр.
Слова, которые должны быть строчными буквами: ["da, de, di, do, du, das, des, dis, dos, dus"]
.
Итак, мой code
на данный момент:
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;
}
Пример входов:
- josé даш-SILVA
- Jorge De Paula
- MaRiA DAS Paulas
Проблема заключается в том, что replaceAll помещает каждое слово в нижнем регистре, а не только предлоги, соответствующие Pattern
.
Это именно то, что '.toLowerCase()' делает. Вам нужно манипулировать каждым матчем. – SLaks
Поскольку вы хотите проверить соответствие за слово, подумайте о том, чтобы разделить строку и проверить совпадение за слово, а не целую строку сразу. – Ian
@SLaks, конечно, я знаю, что делает '.toLowerCase()', но я хочу, чтобы lowerCase только слово, которое соответствует 'Regex'. – developer033