如何移除字符串中的x与X字符?现有Ruby实现代码不生效是什么原因
代码存在的问题
- 数组减法的目标元素配置错误:你将原字符串拆分为了单个字符组成的数组,但待排除的元素写的是
["xX"],这是一个长度为2的字符串,你的单字符数组中不存在这个元素,所以减法操作不会移除任何内容,运行后返回的还是原字符串。 - 实现思路效率偏低:拆分字符串为数组再做集合运算、最后拼接回字符串的方案,远不如直接用字符串内置的替换方法高效简洁。
修正后的实现方案
你可以直接用gsub做全局正则匹配替换所有x、X字符,写法更简单:
class String def xaway self.gsub(/[xX]/, '') end end
如果要沿用你原本的数组处理思路,只需要把待排除的元素拆成两个独立的单字符即可:
class String def xaway s = self.split("") return (s - ["x", "X"]).join end end
两种修正方案测试均符合预期:
"Xylophone".xaway输出ylophone"Xbox".xaway输出bo
内容的提问来源于stack exchange,提问作者kyle
相关产品推荐
相关产品推荐

