Как разбить строку с разделителями в Ruby и преобразовать ее в массив? - PullRequest
216 голосов
/ 10 июня 2009

У меня есть строка

"1,2,3,4"

и я хотел бы преобразовать его в массив:

[1,2,3,4]

Как?

Ответы [ 5 ]

394 голосов
/ 10 июня 2009
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

Или для целых чисел:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

Или для более поздних версий ruby ​​(> = 1.9 - как указал Алекс):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
31 голосов
/ 10 июня 2009

"1,2,3,4".split(",") в виде строк

"1,2,3,4".split(",").map { |s| s.to_i } как целые числа

17 голосов
/ 22 декабря 2016

Для String Integer без пробела как String

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

Для String Integer с пробелом String

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

Для String Integer без пробела как Integer

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

для строки

arr = "abc"

arr.split('')

output: ["a","b","c"]

Объяснение

  1. arr -> строка, с которой вы собираетесь выполнить любое действие.
  2. split() -> - метод, который разделяет входные данные и сохраняет их как массив.
  3. '' или ' ' или ',' -> - это значение, которое необходимо удалить из данной строки.
1 голос
/ 22 декабря 2017

Самый простой способ преобразовать строку с разделителем в виде запятой - это просто использовать метод split

"1,2,3,4".split(',') # "1", "2", "3", "4"]

Более подробную информацию о том, как использовать метод split, можно найти в документах ruby ​​

Делит str на подстроки на основе разделителя, возвращая массив из этих подстрок.

Если шаблон является строкой, то его содержимое используется в качестве разделителя при разделении ул. Если шаблон представляет собой один пробел, str разделяется на пробелы, с ведущими пробелами и последовательными пробелами символы игнорируются.

Если шаблон является регулярным выражением, str делится там, где шаблон соответствует. Всякий раз, когда шаблон соответствует строке нулевой длины, строка разбивается на отдельные персонажи. Если шаблон содержит группы, соответствующие совпадения также будут возвращены в массиве.

Если шаблон опущен, значение $; используется. Если $; ноль (что по умолчанию), str разделяется на пробелы, как если бы `‘ были указаны.

Если параметр limit пропущен, завершающие нулевые поля подавлено. Если предел является положительным числом, самое большее это число поля будут возвращены (если предел равен 1, возвращается вся строка как единственная запись в массиве). Если отрицательный, нет предела количество возвращаемых полей, а завершающие нулевые поля не подавлено.

0 голосов
/ 22 декабря 2017
"12345".each_char.map(&:to_i)

each_char делает то же самое, что и split(''): разбивает строку на массив символов.

хммм, я только сейчас понимаю, что в исходном вопросе строка содержит запятые, поэтому мой ответ не очень полезен; - (..

...