【问题标题】:How do I add element to a comma-delimited string?如何将元素添加到逗号分隔的字符串?
【发布时间】:2017-07-11 23:12:19
【问题描述】:

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

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

另外,我有一个变量:

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

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

【问题讨论】:

  • 这个:"123,456,789,012,345" 不是Array。这是String

标签: ruby-on-rails arrays ruby


【解决方案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 更准确。

【讨论】:

  • 也就是说,只有将字符串转换成数组才能给字符串添加变量?这是最简单的方法吗?
【解决方案2】:

您的数组必须放在括号中。现在你的数组实例变量(@array)实际上是一个字符串。您需要将您的字符串放入一个数组中,如下所示:

array = [123,456,789,012,345]

有多种方法可以将变量放入数组。你当然可以把它铲进去:

 array << params[:q]

如果您希望数组中的值保留在字符串中,可以使用 split 方法:

@array.split or @array.split(',')

拉起 IRB 并将其插入,看看是否是您要查找的内容。您还可以在字符串的前面添加(添加到前面)或附加(添加到末尾)。

这个 ruby​​ 文档会很好地为您服务:Ruby Doc-Arrays

祝你好运!

【讨论】:

    【解决方案3】:
     # 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 在你的例子中是一个字符串而不是一个数组。

    【讨论】:

    • 从未注意到Array#insert 方法,很好
    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2011-08-31
    • 2017-09-13
    相关资源
    最近更新 更多