使用replace()方法实现数字转*时出错,我哪里操作有误?
问题分析与解决
首先你犯了两个关键错误:
- 方法名拼写错误:根本不存在
replaces()方法,正确的方法名是replace()。 - 普通
replace无法批量替换所有数字:如果只是用replace("1", "*")这类写法,只能替换字符串里的单个指定数字,没法一次性把0-9所有数字都换成*。
正确实现方式
方式一:用正则表达式(最简便)
不同语言的写法略有不同,举两个常见场景的例子:
- JavaScript:
const inputStr = "abc123def45"; const result = inputStr.replace(/\d/g, '*'); // 输出结果:"abc***def**"
- Python:
import re input_str = "abc123def45" result = re.sub(r'\d', '*', input_str) # 输出结果:"abc***def**"
这里的\d是正则语法中匹配任意数字的元字符,JavaScript里的g标记表示全局匹配,会替换所有符合条件的字符。
方式二:遍历字符逐个判断
如果不想用正则,也可以手动遍历每个字符做判断:
- Python:
input_str = "abc123def45" result = ''.join(['*' if c.isdigit() else c for c in input_str])
- Java:
String inputStr = "abc123def45"; StringBuilder sb = new StringBuilder(); for (char c : inputStr.toCharArray()) { if (Character.isDigit(c)) { sb.append('*'); } else { sb.append(c); } } String result = sb.toString();
内容的提问来源于stack exchange,提问作者Arisa
相关产品推荐
相关产品推荐

