如何将元素添加到逗号分隔的字符串中?

时间:2017-07-11 23:12:19

标签: ruby-on-rails arrays ruby

我有一个数组(在test_controller.rb中):

@array = "123,456,789,012,345"

另外,我有一个变量:

@var = params[:q] #I get it from the web form.

请告诉我,如何将此变量添加到数组?

3 个答案:

答案 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 在你的情况下是一个字符串而不是一个数组。