Làm cách nào để tách một chuỗi phân tách trong Ruby và chuyển đổi nó thành một mảng?


Câu trả lời:


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

Hoặc cho số nguyên:

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

Hoặc cho các phiên bản sau của ruby ​​(> = 1.9 - như được chỉ ra bởi Alex):

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

28
Hãy nhớ rằng, nếu bạn đang sử dụng> = 1.9, bạn chỉ có thể sử dụng "1,2,3,4" .split (','). Map (: to_i)
Alex Fort

7
Nếu bạn đang sử dụng hỗ trợ tích cực, bạn có thể làm: map (&: to_i)
jonnii

31

"1,2,3,4".split(",") như chuỗi

"1,2,3,4".split(",").map { |s| s.to_i } như số nguyên


19

Đối với String Integerkhông gian nhưString

arr = "12345"

arr.split('')

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

Đối String Integervới không gian nhưString

arr = "1 2 3 4 5"

arr.split(' ')

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

Đối với String Integerkhông gian nhưInteger

arr = "12345"

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

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

Đối với chuỗi

arr = "abc"

arr.split('')

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

Giải thích :

  1. arr -> chuỗi mà bạn sẽ thực hiện bất kỳ hành động.
  2. split() -> là một phương thức, phân tách đầu vào và lưu trữ dưới dạng mảng.
  3. ''hoặc ' 'hoặc ','-> là một giá trị, đó là cần thiết để được gỡ bỏ từ chuỗi nhất định.

1

cách đơn giản nhất để chuyển đổi một chuỗi có dấu phân cách như dấu phẩy là sử dụng phương thức phân tách

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

bạn có thể tìm thêm thông tin về cách sử dụng phương pháp phân chia trong tài liệu ruby

Chia str thành các chuỗi con dựa trên một dấu phân cách, trả về một mảng các chuỗi con này.

Nếu mẫu là một Chuỗi, thì nội dung của nó được sử dụng làm dấu phân cách khi tách str. Nếu mẫu là một không gian duy nhất, str được phân chia trên khoảng trắng, với khoảng trắng hàng đầu và các ký tự khoảng trắng liền kề bị bỏ qua.

Nếu mẫu là Regrec, str được chia ở nơi mẫu phù hợp. Bất cứ khi nào mẫu phù hợp với một chuỗi có độ dài bằng không, str được chia thành các ký tự riêng lẻ. Nếu mẫu có chứa các nhóm, các kết quả khớp tương ứng cũng sẽ được trả về trong mảng.

Nếu mẫu bị bỏ qua, giá trị của $; Được sử dụng. Nếu $; là nil (là mặc định), str được phân chia trên khoảng trắng như thể `'đã được chỉ định.

Nếu tham số giới hạn bị bỏ qua, các trường null theo dõi sẽ bị chặn. Nếu giới hạn là một số dương, nhiều nhất số trường đó sẽ được trả về (nếu giới hạn là 1, toàn bộ chuỗi được trả về là mục duy nhất trong một mảng). Nếu âm, không có giới hạn đối với số lượng trường được trả về và các trường null theo dõi không bị triệt tiêu.


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

each_char về cơ bản giống như split('') : Nó chia một chuỗi thành một mảng các ký tự của nó.

hmmm, bây giờ tôi mới nhận ra rằng trong câu hỏi ban đầu, chuỗi chứa dấu phẩy, vì vậy câu trả lời của tôi không thực sự hữu ích ;-( ..


3
bạn có thể chỉnh sửa câu trả lời của bạn để giải thích những gì bạn đang làm không?
MZaragoza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.