大写连字符的名称

时间:2014-03-06 16:30:12

标签: java

我正在使用来自apache commons的WordUtils来正确地规范人们的名字。例如,

AnGEl lEe -> Angel Lee

它很棒。现在,我提出的一个测试用例是连字符。通常,连字符的每个部分都有首字母大写,所以我希望

AnGeL lEe-YaNG --> Angel Lee-Yang

但是,使用我现有的简单调用capitalizeFully的方法会导致

Angel Lee-yang

如何做到这一点?

5 个答案:

答案 0 :(得分:4)

您可以将多个分隔符传递给重载的WordUtils.capitalizeFully(String, char...)方法:

WordUtils.capitalizeFully("AnGeL lEe-YaNG", ' ', '-')

答案 1 :(得分:4)

因此,在WordUtils版本2.1之前,这似乎是Apache的WordUtils.capitalizeFully方法WordUtils中的一个已知问题。

如果您仍然对使用WordUtils感兴趣,请使用以下内容:

`WordUtils.capitalizeFully("JEfF SamPsOn-bROWN", new char[]{' ', '-'});


这将做什么,它将在字符数组中的分隔符之后大写所有内容。这基本上只会使J,S和B大写。

了解更多信息,您可以查看: Word Utils Documentation

答案 2 :(得分:1)

查看API

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/WordUtils.html

有capitalizeFully(String str,char []分隔符)可以解决你的问题。您是否可以使用此方法,或者您无权访问调用capitalizeFully的代码?

答案 3 :(得分:1)

使用带有一组分隔符的capitalizeFully的重载,并将' - '作为其中一个传递:

WordUtils.capitalizeFully("i aM.fine", {'.'}) = "I am.Fine"

WordUtils reference

答案 4 :(得分:0)

我建议您还包括其他字符,例如',`和-,-,...:

org.apache.commons.text.WordUtils.capitalizeFully(name.trim(), ' ', '-', '—', '\'', '`')

这处理了以下几乎真实的示例:)

mel colm-cille gerard o'brian-> Mel Colm-Cille Gerard O'Brian

奖金:除了修剪外,还考虑删除重复的空格。

注意:也许可以在用户界面中处理它,而不是太早地完成此操作...