我试图从控制台用户输入中获取一个整数数组。我认为我需要使用的函数是获取,但现在我记得这个函数将采用字符串,而不是数组。有人可以帮助我如何将此字符串转换为数组?以下是我到目前为止所做的尝试:
df2 <- lapply(split(df, df$id),fonct)
预期投入:[1,2,3,4]
答案 0 :(得分:1)
你总是可以评估它,但是很危险......
order by
他们可以做这样的事吗..
>> foo = "[0,5,3,2,20,10]"
=> "[0,5,3,2,20,10]"
>> a = eval foo
=> [0, 5, 3, 2, 20, 10]
>> a
=> [0, 5, 3, 2, 20, 10]
>> a.class
=> Array
>>
或更糟
答案 1 :(得分:1)
您的输入格式似乎是JSON或YAML,因此您只需使用JSON parser或YAML parser解析它:
require 'json'
a = JSON.parse(gets) # [1, 2, 3, 4]
# => [1, 2, 3, 4]
答案 2 :(得分:0)
这是一个人为的例子,它采用用户输入的一位数整数字符串,通过String::split
方法创建一个数组,并将每个元素从字符串转换为整数:
puts "Enter array: " # enter this string: 1234
str = gets.chomp
puts str.class #=> String
arr = str.split(//).map(&:to_i)
puts arr.class #=> Array
puts arr.size #=> 4
puts arr.inspect #=> [1, 2, 3, 4]
这远不是一个完整的解决方案(即假设字符串中没有分隔符,只适用于单位数整数等),但它演示了基本概念。
答案 3 :(得分:0)
print "Enter array: "
a = gets.chomp
a.gsub!(/\[|\]/, "").split(',').map(&:to_i)
my_function(a)
在您的示例中,您正在执行a = ...
两次。第一个赋值被第二个赋值覆盖,因此第一个赋值是什么都不做。你知道吗。
我在第三行所做的是将字符串"[1,2,3,4]"
变为整数数组。
来源: http://ruby-doc.org/core-2.2.0/String.html#method-i-split