web-dev-qa-db-ja.com

Rubyで文字列を分割し、最初の項目を除くすべての項目を取得する方法は?

文字列はex="test1, test2, test3, test4, test5"です

私が使うとき

ex.split(",").first

それは戻ります

"test1"

ここで、残りの項目、つまり「 "test2、test3、test4、test5」」を取得します。私が使用する場合

ex.split(",").last

のみを返します

"test5"

最初の項目をスキップして残りのすべての項目を取得する方法は?

80
sgi

これを試して:

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

これで、firstが最初の値になり、restが残りの配列になります。

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

最後の2は、2つ以上に分割しないことを示しています。

通常、splitは値をできるだけ多くのピースに分割します。2番目の値を使用すると、取得するピースの数を制限できます。 ex.split(',', 2)を使用すると、以下が得られます。

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

次の代わりに配列として:

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

配列があるので、reallyが望むのは、splitではなく Array#slice です。

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

おそらく、いくつかの間違いをタイプミスしたでしょう。私が収集したものから、次のような文字列で始まります。

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

それはあなたの質問に答えましたか?

9
bltxd

パーティーに少し遅れてすみませんが、誰も drop メソッドに言及していないことに少し驚いていました:

ex="test1, test2, test3, test4, test5"
ex.split(",").drop(1).join(",")
=> "test2,test3,test4,test5"
5
Anand Shah
ex="test1,test2,test3,test4,test5"
all_but_first=ex.split(/,/)[1..-1]
5
Jonas Elfström

すでに知っている配列としてそれらを使用したい場合は、それらをすべて異なるパラメーターとして使用できます...これを試してください:

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

これも行うことができます:

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

split(",")[i]を試してください。iは結果配列のインデックスです。 splitは以下の配列を提供します

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

その要素はインデックスによってアクセスできます。

0
lalit