我试图使用正则表达式来更改以下字符串
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或类似方法.
如何(最好使用正则表达式)我可以从输入中获得上述输出.
最佳答案 我不认为你可以用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();
(这可以更有效地完成,但它很复杂.)