java - 正则表达式将空格和单词替换为单词的 toFirstUpper

标签 java regex string

我正在尝试使用正则表达式来更改以下字符串

String input = "Creation of book orders" 

String output = "CreationOfBookOrders"

我尝试了以下期望用单词替换空格和单词。

input.replaceAll("\\s\\w", "(\\w)");
input.replaceAll("\\s\\w", "\\w");

但这里的字符串正在用字符“w”代替单词替换空格和单词。

我可以不使用任何 WordUtilsStringUtils 或此类 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/

相关文章:

java - 从 mysql 检索数据并将其放入 JTables

c++ - 如何使用 boost spirit 找到 n 次出现的表达式?

javascript - 获取字符串中重复序列的数量

java - 多行 Java 字符串的任何 future 计划

c++ - 提取文件名的子字符串

java - 为什么需要为Set.toArray指定一个数组,它返回一个数组?

JAVA我做错了什么,我想要线

java - Java中的WebSockets生产就绪服务器?

java - 在事务上下文中使用 findBy

javascript - (?=正则表达式) VS (? :regex)