В Java как вы заглавляете строку в регистре, сохраняя при этом некоторые распространенные сокращения

StackOverflow https://stackoverflow.com/questions/1654066

  •  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, который я использовал для заглавной буквы строк без проблем.Надеюсь, это сэкономит вам время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top