如何在Ruby中拆分字符串并获取除第一个之外的所有项目?

时间:2009-08-26 09:06:00

标签: ruby string split

字符串是 ex="test1, test2, test3, test4, test5"

当我使用

ex.split(",").first

它返回

"test1"

现在我想得到剩下的项目,即`“test2,test3,test4,test5”。如果我使用

ex.split(",").last

只返回

"test5"

如何让所有剩余的项目首先跳过?

9 个答案:

答案 0 :(得分:94)

试试这个:

first, *rest = ex.split(/, /)

现在first将是第一个值,rest将成为数组的其余部分。

答案 1 :(得分:41)

ex.split(',', 2).last

最后的2说:分成两部分,而不是更多。

通常拆分会将值切割成尽可能多的碎片,使用第二个值可以限制您将获得的碎片数量。使用ex.split(',', 2)会给您:

["test1", "test2, test3, test4, test5"]

作为数组,而不是:

["test1", "test2", "test3", "test4", "test5"]

答案 2 :(得分:14)

由于你有一个数组,你真正想要的是Array#slice,而不是split

rest = ex.slice(1 .. -1)
# or
rest = ex[1 .. -1]

答案 3 :(得分:9)

你可能输错了一些东西。从我收集的内容开始,您可以使用以下字符串开头:

string = "test1, test2, test3, test4, test5"

然后你想将它拆分为仅保留重要的子串:

array = string.split(/, /)

最后,您只需要除第一个元素之外的所有元素:

# We extract and remove the first element from array
first_element = array.shift

# Now array contains the expected result, you can check it with
puts array.inspect

这回答了你的问题吗?

答案 4 :(得分:5)

ex="test1,test2,test3,test4,test5"
all_but_first=ex.split(/,/)[1..-1]

答案 5 :(得分:5)

如果你想将它们用作你已经知道的数组,那么你可以将它们中的每一个用作不同的参数...... 试试这个:

parameter1,parameter2,parameter3,parameter4,parameter5 = ex.split(",")

答案 6 :(得分:5)

对不起,派对有点晚了,有点惊讶,没有人提到drop方法:

ex="test1, test2, test3, test4, test5"
ex.split(",").drop(1).join(",")
=> "test2,test3,test4,test5"

答案 7 :(得分:2)

你也可以这样做:

String is ex="test1, test2, test3, test4, test5"
array = ex.split(/,/)
array.size.times do |i|
  p array[i]
end 

答案 8 :(得分:0)

尝试split(",")[i]其中i是结果数组中的索引。 split

下面给出了数组
["test1", " test2", " test3", " test4", " test5"] 

其元素可以通过索引访问。