我认为这将是一个有趣的问题。我有一个解决方案,我很好奇是否有更好的方法来做到这一点。假设你有这个数组:
names = ["on", "question", "quest"]
我想要消除作为数组中其他成员的子串的字符串。我能提出的最干净的代码是:
names.select do |name|
names.all? { |other_name| other_name == name || other_name.match(name).nil? }
end
结果是
["question"]
我讨厌那些代码,只是看起来不像红宝石。有关更好/更有效/更简洁的方法的任何建议吗?
感谢您的帮助。
答案 0 :(得分:2)
我还有一点要做。使用包括?字符串
的方法names.select do |name|
names.one? {|other_name| other_name.include? name}
end
答案 1 :(得分:1)
这不会更容易吗
names.select do |name|
names.one? {|other_name| other_name.index(name)!=nil}
end
它检查项目是否是数组中任何一个项目的一部分。