Как разделить строку с разделителями в Ruby и преобразовать ее в массив?

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

"1,2,3,4"

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

[1,2,3,4]

Как?

5 ответов


>> "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(",").map { |s| s.to_i } в виде целых чисел


на 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. '' или ' ' или ',' - > - это значение, которое необходимо удалить из данной строки.

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

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

вы можете найти более подробную информацию о том, как использовать метод Split в ruby docs

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

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

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

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

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


"12345".each_char.map(&:to_i)

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

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