Bagaimana cara membagi string yang dibatasi di Ruby dan mengubahnya menjadi sebuah array?


Jawaban:


412
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

Atau untuk bilangan bulat:

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

Atau untuk versi ruby ​​yang lebih baru (> = 1.9 - seperti yang ditunjukkan oleh Alex):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]

28
Ingat, jika Anda menggunakan> = 1.9, Anda bisa menggunakan "1,2,3,4" .split (','). Map (: to_i)
Alex Fort

7
Jika Anda menggunakan dukungan aktif yang dapat Anda lakukan: map (&: to_i)
jonnii

31

"1,2,3,4".split(",") sebagai string

"1,2,3,4".split(",").map { |s| s.to_i } sebagai bilangan bulat


19

Karena String Integertanpa ruang sebagaiString

arr = "12345"

arr.split('')

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

Untuk String Integerdengan ruang sebagaiString

arr = "1 2 3 4 5"

arr.split(' ')

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

Karena String Integertanpa ruang sebagaiInteger

arr = "12345"

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

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

Untuk String

arr = "abc"

arr.split('')

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

Penjelasan :

  1. arr -> string yang akan Anda lakukan tindakan apa pun.
  2. split() -> adalah metode, yang membagi input dan menyimpannya sebagai array.
  3. ''atau ' 'atau ','-> adalah nilai, yang perlu dihapus dari string yang diberikan.

1

cara paling sederhana untuk mengonversi string yang memiliki pembatas seperti koma adalah dengan menggunakan metode split

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

Anda dapat menemukan lebih banyak info tentang cara menggunakan metode split di ruby docs

Membagi str menjadi substring berdasarkan pembatas, mengembalikan array substring ini.

Jika pola adalah sebuah String, maka isinya digunakan sebagai pembatas saat memisahkan str. Jika pola adalah ruang tunggal, str terpecah pada spasi putih, dengan spasi kosong terdepan dan karakter spasi spasi yang berdekatan diabaikan.

Jika polanya adalah Regexp, str dibagi di mana polanya cocok. Setiap kali pola cocok dengan string panjang nol, str dibagi menjadi karakter individu. Jika pola berisi grup, masing-masing yang cocok akan dikembalikan dalam array juga.

Jika pola dihilangkan, nilai $; digunakan. Jika $; is nil (yang merupakan default), str dibagi pada whitespace seolah-olah `'ditentukan.

Jika parameter batas dihilangkan, bidang nol yang tertinggal akan ditekan. Jika batas adalah angka positif, paling banyak jumlah bidang itu akan dikembalikan (jika batas adalah 1, seluruh string dikembalikan sebagai satu-satunya entri dalam array). Jika negatif, tidak ada batasan untuk jumlah bidang yang dikembalikan, dan trailing bidang nol tidak ditekan.


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

each_charpada dasarnya tidak sama dengan split(''): Ini membagi string menjadi array karakternya.

hmmm, saya baru sadar sekarang bahwa dalam pertanyaan awal string berisi koma, jadi jawaban saya tidak terlalu membantu ;-( ..


3
dapatkah Anda mengedit jawaban untuk menjelaskan apa yang sedang Anda lakukan?
MZaragoza
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.