У меня есть строка
"1,2,3,4"
и я хотел бы преобразовать его в массив:
[1,2,3,4]
Как?
>> "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]
"1,2,3,4".split(",") в виде строк
"1,2,3,4".split(",")
"1,2,3,4".split(",").map { |s| s.to_i } как целые числа
"1,2,3,4".split(",").map { |s| s.to_i }
String Integer
String
arr = "12345" arr.split('') output: ["1","2","3","4","5"]
arr = "1 2 3 4 5" arr.split(' ') output: ["1","2","3","4","5"]
Integer
arr = "12345" arr.split('').map(&:to_i) output: [1,2,3,4,5]
arr = "abc" arr.split('') output: ["a","b","c"]
Объяснение
arr
split()
''
' '
','
Самый простой способ преобразовать строку с разделителем в виде запятой - это просто использовать метод split
"1,2,3,4".split(',') # "1", "2", "3", "4"]
Более подробную информацию о том, как использовать метод split, можно найти в документах ruby
Делит str на подстроки на основе разделителя, возвращая массив из этих подстрок. Если шаблон является строкой, то его содержимое используется в качестве разделителя при разделении ул. Если шаблон представляет собой один пробел, str разделяется на пробелы, с ведущими пробелами и последовательными пробелами символы игнорируются. Если шаблон является регулярным выражением, str делится там, где шаблон соответствует. Всякий раз, когда шаблон соответствует строке нулевой длины, строка разбивается на отдельные персонажи. Если шаблон содержит группы, соответствующие совпадения также будут возвращены в массиве. Если шаблон опущен, значение $; используется. Если $; ноль (что по умолчанию), str разделяется на пробелы, как если бы `‘ были указаны. Если параметр limit пропущен, завершающие нулевые поля подавлено. Если предел является положительным числом, самое большее это число поля будут возвращены (если предел равен 1, возвращается вся строка как единственная запись в массиве). Если отрицательный, нет предела количество возвращаемых полей, а завершающие нулевые поля не подавлено.
Делит str на подстроки на основе разделителя, возвращая массив из этих подстрок.
Если шаблон является строкой, то его содержимое используется в качестве разделителя при разделении ул. Если шаблон представляет собой один пробел, str разделяется на пробелы, с ведущими пробелами и последовательными пробелами символы игнорируются.
Если шаблон является регулярным выражением, str делится там, где шаблон соответствует. Всякий раз, когда шаблон соответствует строке нулевой длины, строка разбивается на отдельные персонажи. Если шаблон содержит группы, соответствующие совпадения также будут возвращены в массиве.
Если шаблон опущен, значение $; используется. Если $; ноль (что по умолчанию), str разделяется на пробелы, как если бы `‘ были указаны.
Если параметр limit пропущен, завершающие нулевые поля подавлено. Если предел является положительным числом, самое большее это число поля будут возвращены (если предел равен 1, возвращается вся строка как единственная запись в массиве). Если отрицательный, нет предела количество возвращаемых полей, а завершающие нулевые поля не подавлено.
"12345".each_char.map(&:to_i)
each_char делает то же самое, что и split(''): разбивает строку на массив символов.
each_char
split('')
хммм, я только сейчас понимаю, что в исходном вопросе строка содержит запятые, поэтому мой ответ не очень полезен; - (..