如何在Ruby中拆分string并获取除第一个以外的所有项目?

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

当我使用

 ex.split(",").first 

它返回

 "test1" 

现在我想得到剩下的东西,比如“test2,test3,test4,test5“。 如果我使用

 ex.split(",").last 

它只返回

 "test5" 

如何让所有剩余的项目跳过第一个?

尝试这个:

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

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

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

2最后说:分成2件,不多。

通常情况下,分割会将值减less到尽可能多的数量,使用第二个值可以限制您将得到的数量。 使用ex.split(',', 2)会给你:

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

作为一个数组,而不是:

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

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

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

你可能错误地input了一些东西。 从我收集到的,你从一个string开始,例如:

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

那么你想分割它只保留重要的子string:

 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 

这是否回答你的问题?

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

对不起晚了一点,有点惊讶,没有人提到滴的方法:

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

如果你想使用它们作为你已经知道的数组,否则你可以使用它们中的每一个作为不同的参数…试试这个:

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

你也可以这样做:

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