没有用正则,直接苦力莽 ~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int len = s.length();
// 装结果字符串
StringBuilder sb = new StringBuilder();
for(int i = 0; i < len; i++) {
char c = s.charAt(i);
if(isNumer(c)) {
// 先给前面拼一个星
sb.append("*").append(c);
// 设置一个开始往右边走
int r = i + 1;
/*
判断 r 是否走到末尾,且 r 位置的字符是否是数字
如果是数字就继续拼,然后往前移动
*/
while(r < len && isNumer(s.charAt(r))) {
sb.append(s.charAt(r));
r++;
}
// 直到退出循环,它不是一个数字了,再拼接一个星
sb.append("*");
/*
注意这里,r 现在指向的是一个非数字位置,还没有拼接呢!
所以要把 i 设置成 r - 1 的位置,让其走到下面的 else
里面把这个字符拼上去
*/
i = r - 1;
} else {
sb.append(c);
}
}
System.out.println(sb);
}
// 判断是否是数组
public static boolean isNumer(char c) {
return Character.isDigit(c);
}
}

京公网安备 11010502036488号