我正在尝试从数组中删除部分重复值。
['John', 'Johnson', 'Mike', 'Tim', 'Timberland']
我想删除部分重复值。 在这种情况下,我希望保持更长的字符串值。
['Johnson', 'Mike', 'Timberland']
有什么好主意吗?
答案 0 :(得分:3)
我会这样做:
ary = ['John', 'Johnson', 'Mike', 'Tim', 'Timberland']
ary.select {|e| ary.grep(Regexp.new(e)).size == 1 }
# => ["Johnson", "Mike", "Timberland"]
答案 1 :(得分:1)
如果部件仅位于单词的开头,请执行以下操作:
array = ['John', 'Johnson', 'Mike', 'Tim', 'Brakatim', 'Weltimwel']
# => ["John", "Johnson", "Mike", "Tim", "Brakatim", "Weltimwel"]
array.reject {| v | " #{array.join( ' ' )} " =~ /\W#{v}\w/i }
# => ["Johnson", "Mike", "Tim", "Brakatim", "Weltimwel"]
或者如果部分位于单词的开头,以及单词的结尾或中间:
array = ['John', 'Johnson', 'Mike', 'Tim', 'Timberland', 'Brakatim', 'Weltimwel']
# => ["John", "Johnson", "Mike", "Tim", "Timberland", "Brakatim", "Weltimwel"]
array.reject {| v | " #{array.join( ' ' )} " =~ /\W#{v}\w|\w#{v}\W|\w#{v}\w/i }
# => ["Johnson", "Mike", "Timberland", "Brakatim", "Weltimwel"]