是否有Ruby函数对两组字符串执行XOR操作?

时间:2010-11-16 20:05:42

标签: ruby arrays set

我有两个字符串数组,我想找到不在两者的交集中的字符串集。在MATLAB中相当于SETXOR就是我想要的: http://www.mathworks.com/help/techdoc/ref/setxor.html

我正在使用术语集与Array互换。

当然,我可以在形成这个问题的时间内轻松写出自己的内容,但我想我应该问。

3 个答案:

答案 0 :(得分:21)

array1 + array2 - (array1 & array2)

它比写一个问题更短......

顺便说一句,Ruby有一个类Set,所以最好不要将这个词用作数组的同义词。

答案 1 :(得分:10)

是的,正如Nakilon所说,Set。

require 'set'
s = Set.new('a'..'f')
a = ['f','d','e','e','h','i'] #or any enum
p s ^ a  #=> #<Set: {"h", "i", "a", "b", "c"}>

答案 2 :(得分:2)

你总是可以做到

(array0 - array1) + (array1 - array0)

a = [1, 2, 3, 4, 5]
b = [2, 5, 8]
(a - b) + (b - a)
  # => [1, 3, 4, 8]