所以我有一个字符串
2000cc车辆的翻新发动机
我想把它变成
2000CC车辆的翻新发动机
有资本cc在2000CC.我显然不能这样做,text.replaceAll("cc","CC");因为它会用资本版本替换cc的所有出现,所以加速器这个词将成为一个CSelerator.在我的场景中,前四位数字将始终是四位数后跟字母cc,所以我认为这可以用正则表达式来完成.
我的问题是如何在Java中将cc转换为CC,当它跟随4位数并获得我期望的结果时?
String text = text.replaceAll("[0-9]{4}[c]{2}", "?");
Run Code Online (Sandbox Code Playgroud)
你可以试试
text = text.replaceAll("(\\d{4})cc", "$1CC");
// ? ?
// +??????????+
Run Code Online (Sandbox Code Playgroud)
诀窍是将数字放在组中(通过括号),然后在替换部分中使用来自该组的匹配(通过$x哪里x是组号).
如果要确保匹配的文本不是其他单词的一部分,则可以使用单词边界 包围该正则表达式"\\b".您还可以使用look-adound机制来确保匹配文本之前和/或之后没有字母数字字符.