我有一串 ~~40~~ Celsius Temp: 33 Celsius Temp:~~50~~
我想用另一个字符串“ **”替换子字符串“ ~~”(即1st,3rd ..)的奇数出现。
我的输出应该是 **40~~ Celsius Temp: 33 Celsius Temp:**50~~
如何用Java中的正则表达式实现这一目标?
您确实需要一个基本的解析器来处理此问题。正则表达式并非旨在计算此类事件。下面代码的逻辑很简单。每次我们打比赛,~~
我们都会做两件事之一。如果是奇数次出现,则将空字符串附加到替换项上,否则将重新添加匹配的字符串~~
。
String input = "~~40~~ Celsius Temp: 33 Celsius Temp:~~50~~";
Pattern p = Pattern.compile("~~");
Matcher m = p.matcher(input);
StringBuffer sb = new StringBuffer(input.length());
int i = 0;
while (m.find()) {
if (i % 2 == 0) {
m.appendReplacement(sb, "**");
}
else {
m.appendReplacement(sb, m.group(0));
}
++i;
}
m.appendTail(sb);
System.out.println(sb.toString());
**40~~ Celsius Temp: 33 Celsius Temp:**50~~
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句