使用Ruby解析.cfg文件?

Ajn*_*Ajn 3 ruby

我有一个.cfg文件,其中包含以下数据:

*.*.key_val = {
  key1= "value1";
  key2 = "value2";
  key3 = "value3";
};
Run Code Online (Sandbox Code Playgroud)

我想读取此文件并将键值对存储在哈希中@var[key][val]。

怎么做?

Nak*_*lon 5

您可以通过以下方式解析此cfg:

  1. 使用读取文件 File#read
  2. 使用String#scan和正则表达式将文本转换为二维数组
  3. 使用将数组转换为哈希 Hash[]

text = File.read('your.cfg')
# => "*.*.key_val = {\n  key1= \"value1\";\n  key2 = \"value2\";\n  key3 = \"value3\";\n};"

data = text.scan(/(\S+)\s*=\s*"([^"]+)/)
# => [["key1", "value1"], ["key2", "value2"], ["key3", "value3"]]

@var = Hash[data]
# => {"key1"=>"value1", "key2"=>"value2", "key3"=>"value3"}
Run Code Online (Sandbox Code Playgroud)

要不就:

@var = Hash[File.read('your.cfg').scan(/(\S+)\s*=\s*"([^"]+)/)]
Run Code Online (Sandbox Code Playgroud)