在Java中,你如何标题Case一个字符串,同时保留一些常见的缩写

时间:2009-10-31 11:03:21

标签: java title-case

Title Case in 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的缩写。

4 个答案:

答案 0 :(得分:4)

您需要某种字典,其中包含不应大写的单词。您可以使用HashSet。这些方面的东西:

Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
    if (!whiteList.contains(word)) {
        makeProper(word);
    }
}

答案 1 :(得分:2)

没有标准的方法可以做这样的事情。

你可以想出你自己的方法和一组你不想“纠正”的缩写,并从转换中排除

答案 2 :(得分:0)

我能看到的唯一方法是:

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]  

makePropercapitalize
显然你必须创建一个方法来判断这个单词是否是一个缩写 :)如何将所有已知缩写保存在一个文件中,并阅读它们。

答案 3 :(得分:0)

Apache Commons-lang包含WordUtils.capitalizeFully,我用它来大写字符串没有问题。希望它能节省你的时间。