我有一个数组(在test_controller.rb中):
@array = "123,456,789,012,345"
另外,我有一个变量:
@var = params[:q] #I get it from the web form.
请告诉我,如何将此变量添加到数组?
答案 0 :(得分:1)
在上面的代码块中,@array
不是数组,而是一个字符串。
@array
如果你在其他地方设置@array
的值,为了使它成为一个整数数组,用方括号替换双引号:
@array = [123, 456, 789, 012, 345]
然后你可以推送或铲除新值:
@array << params[:q]
或
@array.push(params[:q])
String
转换为Array
或者,如果您希望数字由于某种原因保留字符串,只需使用String#split
方法将字符串转换为数组:
@array = "123,456,789,012,345".split(',') #=> ['123', '456', '789', '012', '345']
String
您也可以将新值(作为字符串)添加到现有字符串中:
@array += ",#{params[:q]}"
因此,如果params[:q]
设置为678
,则会将整数转换为字符串,并将其添加到带有逗号的现有字符串中。
但是,您应该将@array
重命名为@string
以更精确。
答案 1 :(得分:0)
您的阵列必须放在括号中。现在你的数组实例变量(@array)实际上是一个String。您将要将字符串放入如下数组:
array = [123,456,789,012,345]
将变量放入数组有多种方法。你当然可以把它铲起来:
array << params[:q]
如果希望数组中的值保留在字符串中,可以使用split方法:
@array.split or @array.split(',')
拉起IRB并将其插入并查看这是否是您正在寻找的内容。您还可以在字符串前面添加(添加到前面)或追加(添加结尾)。
这个ruby doc会很好地为您服务:Ruby Doc-Arrays
祝你好运!答案 2 :(得分:0)
# The following lines add the element as the last element in the array
array[array.length] = element
array += [element]
array << element
array.push(element)
array.append(element)
# To add it at a specific position, use insert
array.insert(position, element)
正如人们已经提到的那样, @array 在你的情况下是一个字符串而不是一个数组。