将输入作为用户的逗号分隔列表

时间:2013-07-24 18:56:35

标签: ruby arrays input

这是我的代码,用于返回存在的元素 在数组中只有一次

a = [1,2,2,3,3,4,5]
p a.select{|i| a.count(i) == 1}
# >> [1, 4, 5]

任何人都可以建议如何将数组作为用户的键盘输入??

4 个答案:

答案 0 :(得分:1)

print "Enter an array: "
STDOUT.flush
arr = STDIN.gets.chomp.split(/,/).map(&:to_i)
# Enter an array: 1,2,2,3,3,4,5 <ENTER>
arr # => [1, 2, 2, 3, 3, 4, 5]

答案 1 :(得分:0)

下面的方式:

s=gets.chomp
a = s.split("")

答案 2 :(得分:0)

使用gets方法从标准输入中获取字符串。 (这是“获取字符串”的缩写!) chomp删除尾随空格,即在输入结尾处按Enter键产生的换行符。

因此,在提示符处调用str = gets.chomp并输入1 2 2 3 3 4 5会将str设置为"1 2 2 3 3 4 5"。然后,只需使用str.split将其转换为数组。

答案 3 :(得分:0)

这是一个非常简洁的方法,可以将一定数量的输入收集到数组中:

n = 7
a = n.times.collect { gets.chomp.to_i }

然后,您可以使用a上的现有代码。

irb(main):022:0> a = n.times.collect{gets.chomp.to_i}
1
2
2
3
3
4
5
=> [1, 2, 2, 3, 3, 4, 5]
irb(main):023:0> a.select{|i| a.count(i) == 1}
=> [1, 4, 5]