Tôi đang gặp chuỗi str = "[123, 345, 567]". Tôi muốn chuyển nó thành mảng arr = [123, 345, 567]. làm như thế nào?Cách chuyển chuỗi thành Array
Trả lời
Nếu bạn biết rằng chuỗi chứa một mảng, bạn chỉ có thể sử dụng đơn giản eval
;
arr = eval(str)
Nếu bạn không chắc chắn, bạn có thể đi cho niềng răng tham gia nhiều hơn một chút tháo, tách trên ,
và thu thập các con số để một mảng;
arr = str[1..-2].split(',').collect! {|n| n.to_i}
Bản trình diễn của cả hai here.
Điều đơn giản nhất là arr = eval(str)
nhưng điều đó không an toàn lắm. Một tùy chọn khác là làm một cái gì đó như arr = str.gsub(/\[|\]/,'').split(/,/).map(&:to_i)
- loại bỏ các dấu ngoặc đơn từ chuỗi gốc, tách trên dấu phẩy và sau đó chuyển đổi các đoạn chuỗi kết quả thành số nguyên.
str = "[123, 345, 567]"
1) eval(str)
2) str = "[123, 345, 567]".scan(/\d+/) # Make the array
str.map!{ |s| s.to_i } # convert into integer
Đối với các dự án Rails, tôi đã nhận thấy bộ giải mã ActiveSupport JSON tích hợp là một giải pháp tốt. Chỉ cần quấn chuỗi trong JSON, giải mã nó, sau đó trả về mảng mới:
def to_a(str)
wrapped_str = "{ \"wrapper\": #{str} }"
ActiveSupport::JSON.decode(wrapped_str)['wrapper'] rescue str
end
str = '[1, 2, [3, [4, 5, true, "a", {"test": "whee"}]]]'
str_to_a = to_a(str)
Điều này sẽ trả lại một mảng miễn là chuỗi là JSON hợp lệ. Nếu giải mã không thành công, chuỗi gốc sẽ được trả lại. Lưu ý rằng JSON hợp lệ trong trường hợp này chỉ liên quan đến nội dung của mảng - nếu mảng chuỗi chứa bất kỳ băm nào (ở đây có báo trước), tất cả các khóa băm phải được đính kèm trong double trích dẫn. Cũng lưu ý rằng các giá trị boolean sẽ chỉ được chuyển thành các toán tử nếu chúng không phải là kèm theo trong dấu ngoặc kép.
Trả về chuỗi ban đầu về lỗi giải mã cho phép chuyển đổi chuỗi chỉ khi nó thành công (để lại các chuỗi khác không đổi). Ngoài ra, bạn có thể buộc tất cả mọi thứ vào một mảng (hoặc mảng trống) bằng cách sử dụng rescue []
để thay thế.
- 1. PowerShell chuyển đổi Char Array thành chuỗi
- 2. Chuyển đổi Byte Array thành bit Array?
- 3. Chuyển đổi Iterable thành Array
- 4. Chuyển đổi Byte Array thành Bitset
- 5. Chuyển đổi Hash Map thành 2D Array
- 6. Chia NSString thành Array
- 7. Chuyển đổi Array chuỗi trong Java/groovy
- 8. Làm cách nào để chuyển đổi Array [Node] thành NodeSeq?
- 9. Cách chuyển đổi Giá trị v8 thành Array
- 10. Làm thế nào để chuyển đổi chuỗi Array đúp Array trong một dòng
- 11. Chuyển đổi Byte Array chuỗi sử dụng TransactSQL
- 12. chuỗi chuyển đổi thành mảng
- 13. Tìm kiếm một chuỗi trong thành phần mục String-Array
- 14. Làm thế nào để chuyển đổi SimpleXMLObject thành PHP Array?
- 15. Cách chuyển đổi chuỗi thành NSData
- 16. Cách chuyển chuỗi thành số trong gnuplot
- 17. cách chuyển đổi chuỗi thành bool
- 18. Cách chuyển đổi chuỗi thành android.net.Uri
- 19. Cách chuyển chuỗi thành byte trong Java
- 20. Cách chuyển đổi BeautifulSoup.ResultSet thành chuỗi
- 21. Chuyển đổi mảng thành chuỗi trong NodeJS
- 22. Chuyển đổi Array Json
- 23. Chuyển chuỗi thành phao?
- 24. Chuyển chuỗi thành CLLocationCoordinate2D
- 25. Chuỗi chuyển đổi PHP thành mảng
- 26. Perl: Chuyển chuỗi thành tham chiếu?
- 27. Chuyển mảng byte thành chuỗi trong javascript
- 28. Chuyển đổi chuỗi unicode thành chuỗi byte
- 29. Chuyển đổi PDF thành chuỗi
- 30. Chuyển đổi vectơ thành chuỗi
Whoa there, cowboy! Không quá nhanh. Đánh giá là * rất * nguy hiểm. Nếu str đến từ mạng nội bộ tà ác, chẳng hạn như thông số, ứng dụng của bạn có thể đang chạy BẤT CỨ. Hãy tưởng tượng một hacker thay đổi thông số str đó từ "[123,456,789]" thành "User.destroy_all". Bạn sẽ an toàn hơn với tùy chọn thứ hai và phân tích cú pháp các id. – IAmNaN