我正在使用来自apache commons的WordUtils
来正确地规范人们的名字。例如,
AnGEl lEe -> Angel Lee
它很棒。现在,我提出的一个测试用例是连字符。通常,连字符的每个部分都有首字母大写,所以我希望
AnGeL lEe-YaNG --> Angel Lee-Yang
但是,使用我现有的简单调用capitalizeFully
的方法会导致
Angel Lee-yang
如何做到这一点?
答案 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
有capitalizeFully(String str,char []分隔符)可以解决你的问题。您是否可以使用此方法,或者您无权访问调用capitalizeFully的代码?
答案 3 :(得分:1)
使用带有一组分隔符的capitalizeFully的重载,并将' - '作为其中一个传递:
WordUtils.capitalizeFully("i aM.fine", {'.'}) = "I am.Fine"
答案 4 :(得分:0)
我建议您还包括其他字符,例如',`和-,-,...:
org.apache.commons.text.WordUtils.capitalizeFully(name.trim(), ' ', '-', '—', '\'', '`')
这处理了以下几乎真实的示例:)
mel colm-cille gerard o'brian
-> Mel Colm-Cille Gerard O'Brian
奖金:除了修剪外,还考虑删除重复的空格。
注意:也许可以在用户界面中处理它,而不是太早地完成此操作...