Як розділити обмежений рядок у Ruby та перетворити його на масив?


Відповіді:


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

28
Пам'ятайте, якщо ви використовуєте> = 1.9, ви можете просто використовувати "1,2,3,4" .split (','). Map (: to_i)
Алекс Форт

7
Якщо ви використовуєте активну підтримку, ви можете зробити: map (&: to_i)
jonnii


19

Бо 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

найпростіший спосіб перетворення рядка, який має роздільник як кома, - це просто використовувати метод розділення

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

ви можете знайти більше інформації про те, як використовувати метод спліт в рубінових документах

Розділяє str на підрядки на основі роздільника, повертаючи масив цих підрядків.

Якщо шаблон є рядком, то його вміст використовується як роздільник при розділенні str. Якщо шаблон є єдиним пробілом, str розділяється на пробіл, з провідними пробілами та пробігами суміжних символів пробілів ігнорується.

Якщо шаблоном є Regexp, str поділяється там, де шаблон відповідає. Щоразу, коли шаблон відповідає рядку нульової довжини, str поділяється на окремі символи. Якщо шаблон містить групи, відповідні збіги також будуть повернуті в масив.

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

Якщо параметр граничного значення опущено, кінцеві нульові поля придушуються. Якщо ліміт є позитивним числом, максимум ця кількість полів буде повернута (якщо ліміт дорівнює 1, вся рядок повертається як єдиний запис у масиві). Якщо від'ємне значення, кількість обмежених полів не обмежується, а остаточні нульові поля не придушуються.


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

each_charв основному те саме, що split(''): Розбиває рядок на масив своїх символів.

хммм, я просто розумію, що в оригінальному запитанні рядок містить коми, тому моя відповідь не дуже корисна ;-( ..


3
чи можете ви редагувати свою відповідь, щоб пояснити, що ви робите?
MZaragoza
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.