Ruby - 遍历数组中的每个字符串并删除重复的字符
Posted
技术标签:
【中文标题】Ruby - 遍历数组中的每个字符串并删除重复的字符【英文标题】:Ruby - Iterate through each string inside an array and remove repeated characters 【发布时间】:2021-12-10 02:43:56 【问题描述】:我需要单独从每个字符串中取出每个重复项,而不是从整个数组中取出。基本上我正在寻找的是数组中每个字符串的.uniq
,而不是整个数组。
例子:
array = ["abc", "abc", "xxzzyyww", "aaaaa"]
预期输出:
["abc", "abc", "xzyw", "a"]
我尝试使用array.uniq
和array.each.uniq
,但他们没有单独考虑每个字符串,他们正在检查整个字符串是否在数组中重复,所以它给了我以下输出:
["abc", "ab", "xxzzyyww", "aaaaa"]
【问题讨论】:
请提供足够的代码,以便其他人更好地理解或重现问题。 您的示例使读者认为您关心的是连续消除两个相同的字符。如果您想将"aaba"
转换为"ab"
,您应该使用不同的示例。无论如何,您都需要进行编辑以澄清您的问题。
@Cary Swoveland 这个问题很清楚,当他说独特时,这也包括你给定的例子。
【参考方案1】:
如何使用string#squeeze
(https://apidock.com/ruby/String/squeeze)
array = ["abc", "abc", "xxzzyyww", "aaaaa"]
# => ["abc", "abc", "xxzzyyww", "aaaaa"]
array.map |x| x.squeeze
# => ["abc", "abc", "xzyw", "a"]
【讨论】:
或者简单地说:array.map(&:squeeze)
谢谢,它在大多数情况下都有效,但在其中一种情况下,我有一个字符串数组,如下所示:'qzbw qez xgedfibnyuhqsrazlwtpocj fxgpoqijdzybletckwaunsr'\ 'pwnqsizrfcbyljexgouatd ljtperqsodghnufiycxwabzw'
并且由于某种原因,它并没有消除每个重复项。 ..无法弄清楚为什么,寿。但是用.chars.uniq
替换.squeeze
就成功了。【参考方案2】:
输入
array = ["abc", "abc", "xxzzyyww", "aaaaa"]
代码
p array.map _1.chars.uniq.join
输出
["abc", "abc", "xzyw", "a"]
【讨论】:
谢谢!那个适用于每个数组中的每一个字符串。顺便问一下,_1
在这里有什么用处?这只是|x| x.
的另一种说法吗?
是的。你是对的。以上是关于Ruby - 遍历数组中的每个字符串并删除重复的字符的主要内容,如果未能解决你的问题,请参考以下文章