【发布时间】:2016-06-20 02:37:07
【问题描述】:
我使用WordsUtils 到capitalize 字样。
由于我无法定义哪些单词应该大写,所以我必须在 capitalize 函数之后再做一个实现,将一些单词小写。
应该是小写的单词是:["da, de, di, do, du, das, des, dis, dos, dus"]。
所以,我现在的code是:
public static String capitalize(String word) {
String newWord = WordUtils.capitalizeFully(word);
newWord = newWord.replaceAll("\\b([d|D][a-zA-Z]{1,2})\\b", "$1").toLowerCase();
return newWord;
}
-
输入示例:
- 何塞·达斯·希尔瓦
- 豪尔赫·德保拉
- 玛利亚达斯保拉斯
问题在于 replaceAll 将每个单词都放入小写字母,而不仅仅是匹配 Pattern 的介词。
【问题讨论】:
-
这正是
.toLowerCase()所做的。您需要操纵每场比赛。 -
由于要检查每个单词的匹配,考虑拆分字符串并一次检查每个单词的匹配而不是整个字符串。
-
@SLaks,我当然知道
.toLowerCase()做了什么,但我只想小写匹配Regex的单词。 -
那你显然不知道表达式是如何工作的。
标签: java regex replaceall