如何以key = value格式解析和操作一大块字符串?

时间:2017-11-12 22:18:33

标签: ruby-on-rails ruby

我从相机的API中获取一些数据。

响应中返回了一个大字符串,格式为VCA.Ch0.licenseid = 0

以下是回复的一部分

VCA.Ch0.licenseid=0\r\nVCA.Ch0.enable=yes\r\nVCA.Ch0.enablemovobj=yes\r\nVCA.Ch0.enablecntline=yes\r\nVCA.Ch0.trackmode=surv\r\n

是否可以解析此字符串?

假设我想查询有关参数VCA.Ch0.enable。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

▶ input.split.map { |kv| kv.split('=') }.to_h
#⇒ {
#         "VCA.Ch0.enable" => "yes",
#  "VCA.Ch0.enablecntline" => "yes",
#   "VCA.Ch0.enablemovobj" => "yes",
#      "VCA.Ch0.licenseid" => "0",
#      "VCA.Ch0.trackmode" => "surv"
# }

答案 1 :(得分:0)

你可以这样做......

string = 'VCA.Ch0.licenseid=0\r\nVCA.Ch0.enable=yes\r\nVCA.Ch0.enablemovobj=yes\r\nVCA.Ch0.enablecntline=yes\r\nVCA.Ch0.trackmode=surv\r\n'

parsed_result = string.split("\r\n").reduce({}){|result, unit| key, data = unit.split('='); result[key] = data; result }

这可以让你......

parsed_result['VCA.CH0.enable']
=> 'yes'