[英]Parsing odd string with Ruby
API用諸如以下的字符串響應。
"\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""
我正在使用以下代碼進行解析
str = str.scan(/\w+/)
正如我可以的str [0],str [1]等那樣,它工作得很好。
比諸如
"\"DECLINED\"|\"\"|\"64243178\"|\"\"|\"\"|\"\"|\"Invalid Exp Date\"|\"\"|\"5454\"|\"MC\""
試圖解析無效的Exp Date最終會簡單地
str[2] => Invalid
我嘗試了以下
str.split("\"|")
但是開頭總是有一個報價
"Invalid Exp Date
"APPROVED
解析這樣的字符串的最佳方法是什么?
我可能為此使用標准的CSV解析器 ,例如:
> s = "\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""
> CSV.parse(s, :col_sep => '|')
=> [["APPROVED", "222222", "11111111", "", "M", "", "5454", "MC"]]
CSV不僅涵蓋逗號分隔值,而且管道與逗號一樣好。
這是使用String#gsub和String#split的簡單解決方案:
s = "\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""
s.gsub('"','').split('|')
#=> ["APPROVED", "222222", "11111111", "", "M", "", "5454", "MC"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.