Как разбить строку в Ruby и получить все элементы, кроме первого?

Строка ex="test1, test2, test3, test4, test5"

когда я использую

ex.split(",").first

он возвращает

"test1"

Теперь я хочу получить оставшиеся элементы, т.е. ` "test2, test3, test4, test5". Если я использую

ex.split(",").last

он возвращает только

"test5"

Как перенести все оставшиеся объекты?

Ответ 1

Попробуйте следующее:

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

Теперь first будет первым значением, rest будет остальной частью массива.

Ответ 2

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

2 в конце говорит: разделить на 2 части, не более.

нормальный раскол сократит значение на столько частей, сколько может, используя второе значение, которое вы можете ограничить, сколько штук вы получите. Использование ex.split(',', 2) даст вам:

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

как массив, а не:

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

Ответ 3

Поскольку у вас есть массив, то вы действительно хотите Array#slice, а не split.

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

Ответ 4

Вероятно, вы ошиблись. Из того, что я собираю, вы начинаете с строки, например:

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]

Ответ 6

Простите немного поздно вечеринке и немного удивил, что никто не упомянул метод drop:

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

Ответ 7

если вы хотите использовать их в качестве массива u, который уже знал, иначе вы можете использовать каждый из них в качестве другого параметра... попробуйте следующее:

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

Ответ 8

Вы также можете сделать это:

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