2014-03-06 38 views
1

我使用来自apache commons的WordUtils来正确标准化人名。例如,使用连字符名称大写

AnGEl lEe -> Angel Lee 

它很好用。现在我想到的其中一个测试用例是连字符名称。通常情况下,连字符(或多个)的每个部分都有首字母大写,所以我希望

AnGeL lEe-YaNG --> Angel Lee-Yang 

然而,使用我现有的方法,简单地调用capitalizeFully结果

Angel Lee-yang 

如何才能做到这一点?

+0

使用不同的效用函数和/或写自己的?或许可以识别包含连字符的字符串并分解它们,分别使用连字符后的大写字母? – keshlam

回答

4

您可以通过多个分隔符重载WordUtils.capitalizeFully(String, char...)方法:

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

哦,我想知道intellisense是否只是在签名中显示'...',因为它很长或什么。我正在打电话,但没有想到只是通过我的所有分隔符! – MxyL

+0

@MxyL这就是所谓的'vararg'。 –

1

使用capitalizeFully的,将一组分隔符的过载,并传递“ - ”作为其中之一:

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

WordUtils reference

2

所以这似乎实际上是Apache的一个已知的问题WordUtils方法WordUtils.capitalizeFully之前WordUtils版本2.1。

如果你仍然有兴趣使用WordUtils使用以下命令:

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


这将完成的是字符数组中delimters后,将利用一切。这基本上将利用只有歼,S和B

欲了解更多信息,你可以看看: Word Utils Documentation