所以我有一个像
这样的字符串Refurbished Engine for 2000cc Vehicles
我想把它变成
Refurbished Engine for 2000CC Vehicles
在 2000CC 上使用大写字母 cc。我显然不能执行 text.replaceAll("cc","CC");
因为它会将所有出现的 cc 替换为大写版本,因此单词加速器将变成 aCCelerator。在我的场景中,前四位数字始终是四位数字后跟字母 cc,所以我认为这可以使用正则表达式来完成。
我的问题是,在 Java 中,当 cc 跟在 4 位数字之后时,如何将它转换为 CC 并获得我期望的上述结果?
String text = text.replaceAll("[0-9]{4}[c]{2}", "?");
最佳答案
你可以试试
text = text.replaceAll("(\\d{4})cc", "$1CC");
// ↓ ↑
// +→→→→→→→→→→+
技巧是将数字放在组中(通过括号),然后在替换部分中使用来自该组的匹配项(通过 $x
,其中 x
是组号)。
您可以用 word boundaries 包围该正则表达式"\\b"
如果您想确保匹配的文本不是其他单词的一部分。您也可以使用 look-adound确保匹配文本之前和/或之后没有字母数字字符的机制。
关于Java 正则表达式转大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708412/