我正在尝试使用正则表达式来更改以下字符串
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
或类似方法。
还有什么方法(最好使用正则表达式)我可以从 input
得到上面的 output
。
最佳答案
我不认为你可以用 String.replaceAll 做到这一点。您可以在替换字符串中进行的唯一修改是插入与正则表达式匹配的组。
javadoc for Matcher.replaceAll
解释了如何处理替换字符串。
您将需要使用循环。这是一个简单的版本:
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();
(这可以更有效地完成,但很复杂。)
关于java - 正则表达式将空格和单词替换为单词的 toFirstUpper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112418/