Ruby如何遍历数组内每个字符串并移除单个字符串内重复字符
数组内单个字符串内部字符去重实现方案
你之前的写法存在两处问题:
array.uniq作用是对数组整体的完整字符串元素做去重,不会处理字符串内部的字符array.each.uniq语法逻辑不成立:each遍历仅返回原数组,没有传递字符串元素给后续的uniq处理,也无法操作字符串内部内容
实现方法(Ruby环境)
核心逻辑:遍历数组每一个字符串,将字符串拆分为字符数组后做去重,再拼接回新的字符串。
示例代码
输入数组:
array = ["abc", "abc", "xxzzyyww", "aaaaa"]
返回新数组(不修改原数组):
result = array.map { |str| str.chars.uniq.join }
原地修改原数组:
array.map! { |str| str.chars.uniq.join }
输出验证
执行后得到的结果和预期完全一致:
["abc", "abc", "xzyw", "a"]
代码逻辑说明
map遍历原数组的每一个字符串元素,将每个元素传入块处理后,返回处理完成的新数组str.chars将单个字符串拆分为由单字符组成的数组,例如"xxzzyyww"会被拆分为["x","x","z","z","y","y","w","w"]uniq对单字符数组做去重,按字符首次出现的顺序保留唯一值join将去重后的单字符数组拼接回字符串格式
内容的提问来源于stack exchange,提问作者Vini Lourenço
相关产品推荐
相关产品推荐

