В Java как вы называете регистр строкой, сохраняя некоторые общие сокращения - PullRequest
0 голосов
/ 31 октября 2009

Есть много способов Заголовок в java .

Но как вы можете предотвратить преобразование некоторых распространенных сокращений? Например;

System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");

James A Sweet
123 Main St Sw

SW должен оставаться в верхнем регистре, так как это аббревиатура к юго-западу.

Ответы [ 4 ]

4 голосов
/ 31 октября 2009

Вам нужен какой-то словарь, содержащий слова, которые не должны быть написаны заглавными буквами. Вы можете использовать HashSet для этого. Что-то вроде этого:

Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
    if (!whiteList.contains(word)) {
        makeProper(word);
    }
}
2 голосов
/ 31 октября 2009

Нет стандартного способа сделать такую ​​вещь.

Вы можете придумать свой собственный метод и набор сокращений, которые вы не хотите «исправлять», и исключить их из преобразования

0 голосов
/ 09 сентября 2012

Apache Commons-lang содержит WordUtils.capitalizeFully, который я использовал, чтобы без проблем использовать заглавные буквы в строках. Надеюсь, это сэкономит ваше время.

0 голосов
/ 31 октября 2009

Единственный способ увидеть это:

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]  

makeProper или с заглавной буквы
очевидно, вы должны создать метод, который решит, является ли слово аббревиатурой или нет :) как насчет сохранения всех известных сокращений в файле и чтения их.

...