字符串里面的数字类型的数据统一加上一个值
代码
.
// An highlighted block
import java.util.Iterator;
public class Test001 {
public static void main(String[] args) {
String resultString = addNum("dfsadfsadfs,f10,10,dfsdfsa10", 10, true);
//自增 true 结果 dfsadfsadfs,f20,21,dfsdfsa22
//自增 false 结果 dfsadfsadfs,f20,20,dfsdfsa20
System.out.println(resultString);
}
public static String addNum(String str, int num, boolean isIncrease) {
//将字串转成字节数组
byte[] arr = str.getBytes();
//重写迭代方法
Iterator<Byte> chars = new Iterator<Byte>() {
private int i = 0;
@Override
public boolean hasNext() {
return i != arr.length;
}
@Override
public Byte next() {
return arr[i++];
}
};
//接收返回结果
StringBuilder res = new StringBuilder();
//接收数字
StringBuffer nums = new StringBuffer();
while (chars.hasNext()) {
int val = chars.next();
//判断是否是数字
if (val >= 48 && val <= 57) {
nums.append((char) val);
//判断是否是最后一个字节
if (!chars.hasNext()) {
int s = Integer.parseInt(String.valueOf(nums)) + num;
res.append(s);
}
} else {
if (!nums.toString().isEmpty()) {
int s = Integer.parseInt(String.valueOf(nums)) + num;
res.append(s);
res.append((char) val);
nums = new StringBuffer();
if (isIncrease) {
num++;
}
} else {
res.append((char) val);
}
}
}
return res.toString();
}
}
刚工作不久的菜🐥一只,也是第一次写博客,心血来潮想到了这个有点奇怪的东西,就写下来了,写着个主要是做个记录,如果有不合理的地方,请多多指教。