Python中如何完全移除字符串所有指定子串并处理字符移位问题
完全移除所有匹配子串的解决方案
你遇到的问题是单次替换只会移除原始字符串中已存在的非重叠匹配项,替换后拼接生成的新匹配子串会被遗漏,可通过以下两种通用思路实现全量移除:
思路1:循环替换(实现简单,适合短字符串场景)
循环检测字符串中是否存在目标子串,只要存在就执行一次替换,直到完全没有匹配项为止。
Python 示例代码
origin_str = "whatthemomooofun" target = "moo" while target in origin_str: # 每次替换第一个匹配到的子串 origin_str = origin_str.replace(target, "", 1) print(origin_str) # 输出结果:whatthefun
JavaScript 示例代码
const originStr = "whatthemomooofun" const target = "moo" let res = originStr while(res.includes(target)) { res = res.replace(target, '') } console.log(res) // 输出结果:whatthefun
思路2:栈实现(效率更高,适合长字符串场景)
时间复杂度为O(n),仅需遍历一次字符串即可完成处理,不会出现重复扫描的性能损耗:
Python 示例代码
origin_str = "whatthemomooofun" target = "moo" target_len = len(target) stack = [] for char in origin_str: stack.append(char) # 检测栈末尾的字符是否和目标子串匹配 if len(stack) >= target_len and ''.join(stack[-target_len:]) == target: # 匹配则删除栈末尾对应长度的字符 del stack[-target_len:] res = ''.join(stack) print(res) # 输出结果:whatthefun
上述两种方案都可以处理替换后新生成的匹配子串,满足完全删除所有指定子串的需求。
内容的提问来源于stack exchange,提问作者LOL
相关产品推荐
相关产品推荐

