在Ruby中操作字符串和数组

god*_*yan 1 ruby arrays string

我有:

@fruit = ["Apples, Oranges, Bananas", "Apples", "Bananas, Pears", "Bananas, Apples, Pears", "Pears"]
Run Code Online (Sandbox Code Playgroud)

我想用它做两件不同的事情,先把它变成一个纯数组,每个只有一个实例:

["Apples", "Oranges", "Bananas", "Pears"]
Run Code Online (Sandbox Code Playgroud)

其次,我希望能够确定数组中给定实例的数量:

@fruit.count("Apples") = 3
Run Code Online (Sandbox Code Playgroud)

第三,是否可以按实例数量对数组进行排序:

@fruit.sort = ["Apples", "Apples", "Apples", "Bananas", "Bananas", "Bananas", "Pears", "Pears", "Pears", "Oranges"]
Run Code Online (Sandbox Code Playgroud)

我必须使用什么数组/字符串函数来执行此操作?

Jim*_*dra 6

arr = ["Apples, Oranges, Bananas", "Apples", "Bananas, Pears", "Bananas, Apples, Pears", "Pears"]

hsh = Hash.new { |h, k| h[k] = 0 }

arr.each do |str|
  fruits = str.split(/, /)
  fruits.each do |fruit|
    hsh[fruit] += 1
  end
end

p hsh.keys
# => ["Apples", "Oranges", "Bananas", "Pears"]

hsh.keys.each { |fruit| puts "#{fruit}: #{hsh[fruit]}" }
# => Apples: 3
# => Oranges: 1
# => Bananas: 3
# => Pears: 3
Run Code Online (Sandbox Code Playgroud)