我试图使用正则表达式来更改以下字符串
String input = "Creation of book orders"
到
String output = "CreationOfBookOrders"
我尝试了以下内容,期望用单词替换空格和单词。
input.replaceAll("\\s\\w", "(\\w)");
input.replaceAll("\\s\\w", "\\w");
但是这里的字符串正在用字符替换空格和单词' w'而不是单词。
我无法使用任何WordUtils
或StringUtils
或类似的Util类。否则我可以用空字符串替换所有空格并应用WordUtils.capitalize
或类似的方法。
如何(最好使用正则表达式)我可以从output
获得上述input
。
答案 0 :(得分:2)
我不认为你可以用String.replaceAll做到这一点。您可以在替换字符串中进行的唯一修改是插入与正则表达式匹配的组。
Matcher.replaceAll
javadoc解释了如何处理替换字符串。
您需要使用循环。这是一个简单的版本:
StringBuilder sb = new StringBuilder(input);
Pattern pattern = Pattern.compile("\\s\\w");
Matcher matcher = pattern.matcher(s);
int pos = 0;
while (matcher.find(pos)) {
String replacement = matcher.group().substring(1).toUpperCase();
pos = matcher.start();
sb.replace(pos, pos + 2, replacement);
pos += 1;
}
output = sb.toString();
(这可以更有效地完成,但它很复杂。)