Tra*_*vis 4 java replace camelcasing string-formatting
我有一个看起来像这样的字符串:
CALDARI_STARSHIP_ENGINEERING
Run Code Online (Sandbox Code Playgroud)
我需要编辑它看起来像
Caldari Starship Engineering
Run Code Online (Sandbox Code Playgroud)
不幸的是,早上三点,我不能为我的生活弄清楚这一点.我总是在更换字符串中的东西时遇到麻烦,所以任何帮助都会很棒,并且会帮助我了解将来如何做到这一点.
这样的事情很简单:
String text = "CALDARI_STARSHIP_ENGINEERING";
text = text.replace("_", " ");
StringBuilder out = new StringBuilder();
for (String s : text.split("\\b")) {
if (!s.isEmpty()) {
out.append(s.substring(0, 1) + s.substring(1).toLowerCase());
}
}
System.out.println("[" + out.toString() + "]");
// prints "[Caldari Starship Engineering]"
Run Code Online (Sandbox Code Playgroud)
这个split
词边界锚.
Matcher
循环解决方案如果你不介意使用StringBuffer
,你也可以Matcher.appendReplacement/Tail
像这样使用循环:
String text = "CALDARI_STARSHIP_ENGINEERING";
text = text.replace("_", " ");
Matcher m = Pattern.compile("(?<=\\b\\w)\\w+").matcher(text);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().toLowerCase());
}
m.appendTail(sb);
System.out.println("[" + sb.toString() + "]");
// prints "[Caldari Starship Engineering]"
Run Code Online (Sandbox Code Playgroud)
正则表达式使用断言来匹配单词的"尾部"部分,即需要小写的部分.它看起来后面(?<=...)
有一个单词边界\b
后跟一个单词字符\w
.\w+
然后,任何剩余的都需要匹配,以便它可以降低.
\l
\u
,\L
和\U
.appendReplacement/Tail
只需要StringBuffer
归档时间: |
|
查看次数: |
474 次 |
最近记录: |