在 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);
    }
}

其他提示

有是做这样的事情的标准方法。

您可以拿出你自己的方法和一组你不想缩写的“修正”,并排除转型确实

我能看到的唯一方法是:

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-lang 包含 WordUtils.capitalizeFully,我用它来毫无问题地大写字符串。希望它可以节省您的时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top