Rubyで文字列を分割し、最初のアイテムを除くすべてのアイテムを取得するにはどうすればよいですか?


83

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

使うとき

ex.split(",").first

戻ります

"test1"

次に、残りのアイテム、つまり「test2、test3、test4、test5」を取得します。使用する場合

ex.split(",").last

戻るだけです

"test5"

最初のアイテムをスキップして残りのすべてのアイテムを取得するにはどうすればよいですか?


待ってください、あなたは?でsplitStringメソッド)を使用していArrayます
Konrad Rudolph

申し訳ありませんが、ここで文字列を使用しています。質問を編集します
sgi

回答:


98

これを試して:

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

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


1
Rubyのどのバージョンで?1.8.7で試しましたが、rest「test2」しか含まれていません。
ジョナスElfström

7
おそらく意味first,*rest = ex.split(/,/)
ezpz 2009

はい、その時点で自分の回線をテストできませんでした。first, *rest = ex.split(/,/)確かに私が意味したことでした。それを片付けてくれてありがとう。
avdgaag 2009

別の方法は、結果の配列から範囲を取得することです。 things = ex.split(/,/); things[1..-1]
ラッセルB

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

最後の2は、次のように述べています。2つに分割し、それ以上ではありません。

通常、splitは値を可能な限り多くの部分にカットし、2番目の値を使用して、取得する部分の数を制限できます。を使用ex.split(',', 2)すると、次のようになります。

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

代わりに、配列として:

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

欠点はsplit、最初の値を除くすべてを文字列ではなく配列として使用する必要がある場合です。それでもいいトリックです。また、を使用ex.split(',', 2).lastすると、言及した配列は返されず、最後の値のみが返されますよね?
avdgaag 2009

コピー&ペーストの間違いははは、修正済み
user163365 2009

15

配列があるので、本当に必要なのはArray#slice、ではなくsplitです。

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

3
したがって、文字列を使用するとex.split(/, /).slice(1..-1)、最初の値に関心がないと仮定して、最初の要素を除くすべてを取得する必要があります。
avdgaag 2009

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

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



6

パーティーに少し遅れて申し訳ありませんが、ドロップ方法について誰も言及していないことに少し驚いています

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

5

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

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

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"] 

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.