java怎么把字符串中最后出现的一段0-9的数字替换成某个字符

用这段代码输出的结果是“广州市46街道308号房*”,能帮忙找下原因么,为什么不能把308替换成“*”public class test_1 { public static void main(String[] args) { StringBuffer str=new StringBuffer("广州市46街道308号房"); StringBuffer str1=str.reverse(); String s=str1.toString(); StringBuffer S=new StringBuffer(s.replaceFirst("[0-9]*", "*")); System.out.println(S.reverse()); }}
2026年09月27日 14:36
有5个网友回答
网友(1):

//一个字符串
String str = "这是一个字符串0123";
String newStr="";
//将他转换成数组
char[] strArr = str.toCharArray();
for(int i=0;i if(!('0'.equals(strArr[i]) ||'1'.equals(strArr[i])||'2'.equals(strArr[i])||'3'.equals(strArr[i]))){
newStr += strArr[i];
}
}

网友(2):

你不就是替换308吗?
public static void main(String[] args) {
StringBuffer str=new StringBuffer("广州市46街道308号房");
StringBuffer str1=str.reverse();
String s=str1.toString();
StringBuffer S=new StringBuffer(s.replaceFirst("\\d+", "*"));
System.out.println(S.reverse());

}
这样行吗?你是想替换成一个还是几个?

网友(3):

String str="广州市46街道308号房";
str=str.replaceFirst("\\d+([^\\d]*?$)", "(已替换)$1");
System.out.println(str);
广州市46街道(已替换)号房

网友(4):

按照你说的,只有0-9的话,而且是换成某个字符,推荐使用switch case,因为在switch case中的条件,只能是char或者int型,而你现在用来判别的条件刚好是10个不重复数字,所以使用起来会很方便。

网友(5):

String s = "广州市46街道308号房";
String y = s.replaceAll("[^A-Za-z\u4e00-\u9fa5]", "*");
System.out.println(y);