[英]Convert string arra into array of integers
我收到這樣的參數"[[201], [511], [3451]]"
,我想把它轉換成[201, 511, 3451]
假設params是您收到的內容,您可以使用 scan 和 map 來使用正則表達式,查找響應中的數字,然后將數組中的每個項目映射到一個整數:
params = "[[201], [511], [3451]]"
params_array = params.scan(/\d+/).map(&:to_i)
我們在這里所做的是我們正在查看字符串並使用Scan方法只選擇數字,然后我們得到一個字符串數組,以便我們使用Map方法將其轉換為整數。 根據地圖方法,感謝Cary Swoveland 對其進行更新。
它會幫助你!
str_arr = "[[201], [511], [3451]]"
JSON.parse(str_arr).flatten
or
eval(str_arr).flatten
這是一種有趣的方式(請注意,它僅在您的參數是數組字符串的情況下才有效)
arr1 = instance_eval("[1,2,3]")
puts arr1.inspect # [1,2,3]
arr2 = instance_eval("[[201], [511], [3451]]")
puts arr2.inspect # [[201], [511], [3451]]
首先,我會進行健全性檢查,確保您沒有注入惡意代碼:
raise "Can not convert #{params}" if /[^\[\]\d]/ =~ params
現在您可以斷言您的字符串是安全的:
params.untaint
然后轉換
arr = eval(params).flatten
或者
arr = eval(params).flatten(1)
如果您的字符串中有深層嵌套的“數組”,則取決於您想要接收的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.