gpt4 book ai didi

java - 使用正则表达式替换所有奇数出现的子字符串

转载 作者:行者123 更新时间:2023-12-02 08:44:40 25 4
gpt4 key购买 nike

我有一个字符串~~40~~摄氏度温度:33摄氏度温度:~~50~~

我想用另一个字符串“**”替换奇数出现的子字符串“~~”,即第一个、第三个..。

我的输出应该是**40~~ 摄氏度 Temp: 33 摄氏度 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~~

Demo

关于java - 使用正则表达式替换所有奇数出现的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50597204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com