使用Ruby解析奇数字符串

时间:2014-08-18 21:28:14

标签: ruby

API使用如下字符串进行响应。

"\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""

我使用以下代码解析

str = str.scan(/\w+/)

这很好,因为我可以str [0],str [1]等等。

之类的回复
"\"DECLINED\"|\"\"|\"64243178\"|\"\"|\"\"|\"\"|\"Invalid Exp Date\"|\"\"|\"5454\"|\"MC\""

尝试解析无效的Exp日期最终只需

str[2] => Invalid

我尝试了以下

str.split("\"|")

但开头总有一句话

"Invalid Exp Date
"APPROVED

解析这样一个字符串的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

我可能会使用standard CSV parser,例如:

> s = "\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""
> CSV.parse(s, :col_sep => '|')
 => [["APPROVED", "222222", "11111111", "", "M", "", "5454", "MC"]] 

CSV涵盖的不仅仅是逗号分隔值,管道与逗号一样好。

答案 1 :(得分:0)

使用String#gsubString#split

这是一个简单的解决方案
s = "\"APPROVED\"|\"222222\"|\"11111111\"|\"\"|\"M\"|\"\"|\"5454\"|\"MC\""

s.gsub('"','').split('|')
  #=> ["APPROVED", "222222", "11111111", "", "M", "", "5454", "MC"]