Java 大写连字符名称

Java 大写连字符名称,java,Java,我正在使用ApacheCommons中的WordUtils来正确规范人们的名字。比如说, AnGEl lEe -> Angel Lee 而且效果很好。现在,我提出的一个测试用例是连字符的名称。通常,连字符的每个部分的第一个字母都大写,所以我希望 AnGeL lEe-YaNG --> Angel Lee-Yang 但是,使用我现有的方法,简单地调用capitalizeFully,会导致 Angel Lee-yang 如何做到这一点?您可以向重载方法传递多个分隔符: 看看API

我正在使用ApacheCommons中的
WordUtils
来正确规范人们的名字。比如说,

AnGEl lEe -> Angel Lee
而且效果很好。现在,我提出的一个测试用例是连字符的名称。通常,连字符的每个部分的第一个字母都大写,所以我希望

AnGeL lEe-YaNG --> Angel Lee-Yang
但是,使用我现有的方法,简单地调用
capitalizeFully
,会导致

Angel Lee-yang

如何做到这一点?

您可以向重载方法传递多个分隔符:

看看API


有大写(String str,char[]分隔符)可以解决您的问题。您可以使用此方法,还是无法访问以大写形式调用的代码?

使用以一组分隔符为参数的大写形式重载,并将“-”作为其中一个分隔符传入:

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

所以这似乎是Apache的
WordUtils
方法
WordUtils.2.1版之前的
WordUtils
中的一个已知问题

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

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

这样做的目的是将字符数组中的delimters之后的所有内容都大写。这基本上只将J、S和B资本化。

有关更多信息,您可以查看:

我建议您还包括其他字符,如“,”和-,-,…:

org.apache.commons.text.WordUtils.capitalizeFully(name.trim(), ' ', '-', '—', '\'', '`')
这将处理以下几乎真实的示例:)

mel colm cille gerard o'brian
->
mel colm cille gerard o'brian

奖励:除了修剪之外,还考虑删除重复的空白。< /P>


注意:可能在UI中处理此问题,而不是过早地执行此操作…

使用不同的实用程序函数和/或编写自己的实用程序?也许识别包含连字符的字符串并将其拆分,将连字符后面的内容分别大写?另请参见:哦,我想知道intellisense是否只是在签名中显示
,因为它太长了还是什么。我在分别打电话,但没想到把我所有的分隔符都传进来@称为
vararg
的MxyL。
org.apache.commons.text.WordUtils.capitalizeFully(name.trim(), ' ', '-', '—', '\'', '`')