我有以下数组:
str_ary = ["Thursday morning", "Twitter users", "Thursday morning , 140 characters",
"of Twitter users", "the virtual pockets of Twitter users","Beginning Thursday morning , 140 characters","in the virtual pockets of Twitter users"]
我想过滤它并得到 str_ary2 = ["Thursday morning", "Twitter users"]。
此外,如果那里有一个唯一的字符串(它不属于任何其他字符串,我也想保留它..)。
最好的方法是什么?
现在我有了这个,但它不起作用......
def select_correct_sizes(arrays)
result = []
arrays.each do |a|
arrays.each do |b|
res = nil
if b != a
if a.split(' ').length >= b.split(' ').length
res = self.substract_and_check(a, b)
elsif a.split(' ').length < b.split(' ').length
res = self.substract_and_check(b, a)
end
if !res.nil?
result << res
end
end
end
end
result = result.uniq
return result
end
def substract_and_check(a, b)
res = a.gsub(/#{b}/, '')
res = res.split(' ')
if res.length + b.split(' ').length == a.split(' ').length
puts "#{b} IS PART OF THE #{a}"
return b
elsif text_uniq?(a,b)
puts "#{b} IS UNIQUE"
return b
else
return nil
end
end
def text_uniq?(a,b)
res = a.gsub(/#{b}/, '')
res = res.split(' ')
if res.length == a.split(' ').length
return true
else
return false
end
end
str_ary2 = select_correct_sizes(str_ary)
编辑:对不起,如果问题不是很清楚..我需要提取字符串,即
A) 1) 存在于数组中的其他字符串中 2) 大小最小 B) 1) 唯一(例如,不存在于数组中的任何其他字符串中)。
所有的字符串都是过滤后的短语,所以不会有任何像“the”、“one”等随机的垃圾词。
在上面的示例中,“Twitter users”和“Thursday Morning”都出现在数组的其他字符串中。
因此,如果数组包含“绿球”之类的东西,我也需要提取它,因为它相对于数组中的其他字符串是唯一的。
希望现在更清楚,否则请告诉我。
EDIT2:我不希望任何人使用上面的代码来回答,我也会接受不同的代码或详细的伪代码..