使用正则表达式

时间:2017-12-11 18:13:06

标签: java regex string

我的目标是在上面的camel case格式化字符串中引入大写字母之间的空格。 例如 ThisIsATest - >这是一个测试

目前我通过调用此函数

来完成此操作
public static String addSpacesBetweenCapitalLetters(String input) {
    StringBuilder sb = new StringBuilder();

    for(char c : input.toCharArray()) {
        sb.append(Character.isUpperCase(c) ? " "+c : c);
    }

    if(sb.codePointAt(0)==new Character(' ')) {
        sb.deleteCharAt(0);
    }
    return sb.toString();
}

我想知道是否还有一种方法可以使用String.replaceAll(正则表达式,替换)来解决此任务。通过使用正则表达式可以轻松找到资本级别。我们可以在替换中引用找到的字符,类似于以下代码吗?

input.replaceAll("[A-Z]"," "+&foundChar);

1 个答案:

答案 0 :(得分:3)

您可以使用此regex based on lookarounds

str = str.replaceAll("(?<=\\p{L})(?=\\p{Lu})", " ");

RegEx Demo

RegEx分手:

  • (?<=\p{L}):Lookbehind声称我们在以前的位置有任何案例信件
  • (?=\p{Lu}):预见断言我们在下一个位置有一个大写字母