【发布时间】:2020-06-30 16:13:15
【问题描述】:
我正在尝试验证包含名称的字符串,以便它们正确大写。
我正在使用
WordUtils.capitalizeFully(name.trim(), ' ', '-', '\'');
这适用于以下情况:
johN o'Smith => John O'Smith 等
但是是否有一个可用的库,我可以像使用 WordUtils 的字符一样添加字符串作为分隔符? 例如:
Mc (like McAllister)
D' (if followed by non-vowel, like D'Souza)
也许是为了完全避免某些以 Mac 开头的名称的用法 作为
"Macintosh, and Macdonald" are suitably not camel case
yet "MacDowel" is a suitable camel-case word
同样,可能还有更多用例
使用字符串作为分隔符的 decapitalizer,例如:
de/di (if no follow characters.. e.g. John de Smith)
d' (if followed by a vowel) ... YET do ensure that the vowel is capitalised e.g. John d'Agio
现在,我正在研究一个解决方案,其中 a 有一个此类前缀的字符串数组,并通过诸如
之类的常量将它们排序在适当的类别中final String [] CAPITALISE_FIRST_CHAR_AFTER_THIS_STRING;
随后的 for 循环迭代 split() 名称全名以匹配每个单词与相应常量数组的单词,并应用条件逻辑替换 StringBuilder 实例中的相应后续字符,用大写字母或其他任何情况可能是……等等,但我只是意识到有很多事情要做。
LENGTHY REQUEST 我的道歉,但我希望这有点道理
我看了这个Given Name Formatting,感觉很理想
但我实际上无法查看最佳答案中提供的链接;你也面临这个问题吗?
【问题讨论】:
标签: java string stringbuilder capitalization