我的目标是在上面的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);
答案 0 :(得分:3)
您可以使用此regex based on lookarounds:
str = str.replaceAll("(?<=\\p{L})(?=\\p{Lu})", " ");
RegEx分手:
(?<=\p{L})
:Lookbehind声称我们在以前的位置有任何案例信件(?=\p{Lu})
:预见断言我们在下一个位置有一个大写字母