2014-03-06 39 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