В Java как вы заглавляете строку в регистре, сохраняя при этом некоторые распространенные сокращения
-
11-09-2019 - |
Вопрос
Есть много способов Регистр заголовка в java.
Но как вы можете предотвратить преобразование некоторых распространенных сокращений?Например;
System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");
James A Sweet
123 Main St Sw
SW должен оставаться заглавным, так как это сокращение от South West.
Решение
Вам нужен какой-то словарь, содержащий слова, которые не должны быть написаны с заглавной буквы.Вы могли бы использовать HashSet
за это.Что-то в этом роде:
Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
if (!whiteList.contains(word)) {
makeProper(word);
}
}
Другие советы
Не существует стандартного способа сделать такую вещь.
Вы могли бы придумать свой собственный метод и набор сокращений, которые вы не хотите "исправлять", и исключить does из преобразования
Единственный способ, которым я мог видеть, это:
1. split your input text into words 2. iterate through words 2.a if word is a abbreviation then 2.a.1 do nothing or convert to uppercase, whatever is required 2.b otherwise 2.b.1 call [makeProper][1] or [capitalize][2]
Создай подходящее или извлекать выгоду
очевидно, что вам нужно создать метод, который будет решать, является ли данное слово аббревиатурой или нет :) как насчет того, чтобы сохранить все известные аббревиатуры в файле и прочитать их.
Apache Commons-язык содержит WordUtils.capitalizeFully, который я использовал для заглавной буквы строк без проблем.Надеюсь, это сэкономит вам время.