如何快速将字符串中重复的b、o替换为重复次数加对应字符?
简便实现重复b/o字符的压缩替换
核心思路是利用正则表达式匹配连续重复的b或o,通过替换逻辑自动生成「重复次数+对应字符」的格式,无需复杂的循环处理。
JavaScript 实现
const compressStr = str => str.replace(/([bo])\1+/g, (match, char) => `${match.length}${char}`); // 测试示例 console.log(compressStr('bo$bbo$ooo!')); // 输出: bo$2bo$3o!
Python 实现
import re def compress_str(s): return re.sub(r'([bo])\1+', lambda m: f"{len(m.group())}{m.group(1)}", s) // 测试示例 print(compress_str('bo$bbo$ooo!')) # 输出: bo$2bo$3o!
正则逻辑说明
([bo]):捕获单个b或o作为分组,后续用于提取原字符\1+:匹配与捕获分组完全相同的字符,且重复1次以上(即连续重复的情况)g(JavaScript):全局匹配,确保替换所有符合条件的连续重复字符- 替换函数中,
match.length(JavaScript)或len(m.group())(Python)直接获取连续重复的次数,拼接后完成替换
这种方案代码简洁,自动忽略非b/o的字符,完全满足需求。
内容的提问来源于stack exchange,提问作者poka luka wan
相关产品推荐
相关产品推荐

