2009-08-26 36 views
68

字符串是 ex="test1, test2, test3, test4, test5"如何在Ruby中拆分字符串並獲取除第一個以外的所有項目?

當我使用

ex.split(",").first 

返回

"test1" 

現在我想要得到的剩餘項目,即' 「TEST2,TEST3,TEST4,TEST5」。如果我使用

ex.split(",").last 

它只返回

"test5" 

如何獲得所有其餘的項目跳過第一個?

+0

等一下,你在'Array'上使用'split'(一個'String'方法)? – 2009-08-26 09:13:13

+0

對不起guyzz ...即時使用字符串在這裏.. 我將編輯問題 – sgi 2009-08-26 09:25:51

回答

84

試試這個:

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

現在first將是第一個值,rest將成爲陣列的其餘部分。

+1

在哪個版本的Ruby?我在1.8.7版本中試過,「rest」只包含「test2」。 – 2009-08-26 18:34:46

+6

大概意思是'first,* rest = ex.split(/,/)' – ezpz 2009-08-27 17:15:51

+0

是的,我當時無法測試我的線。 '首先,*休息= ex.split(/,/)'確實是我的意思。謝謝你清理那個。 – avdgaag 2009-08-28 09:06:03

14

既然你有一個數組,你真的想要的是Array#slice,而不是split

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

因此,對於一個字符串,你希望'ex.split(/,/)。slice(1 ..- 1)'得到除第一個元素以外的所有元素,假設你不是對第一個價值感興趣。 – avdgaag 2009-08-26 09:38:37

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 

這是否回答你的問題?

5
ex="test1,test2,test3,test4,test5" 
all_but_first=ex.split(/,/)[1..-1] 
37
ex.split(',', 2).last 

的2月末說:分割成2塊,而不是更多。

通常情況下,分割會將值減少到儘可能多的部分,使用第二個值可以限制您將獲得的塊數。使用ex.split(',', 2)會給你:

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

爲數組,而不是:

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

缺點是你不得不'split'再次,如果你想所有,但第一個值作爲一個數組,而不是字符串。仍然是一個很好的技巧 此外,使用'ex.split(',',2).last'不會返回你提到的數組,只有它的最後一個值,對吧? – avdgaag 2009-08-26 09:42:47

+0

複製粘貼錯誤哈哈,修復它 – user163365 2009-08-27 17:07:52

5

如果u想使用它們爲u已經知道一個數組,否則ü可以使用他們每個人的不同的參數... 試試這個:

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

對不起有點遲到了,有點驚訝,沒有人提到的drop方法:

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

你也可以這樣做:

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

嘗試split(",")[i]其中i是結果數組中的索引。 split給出下面的列表

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

其元素可以通過索引訪問。

相關問題