我有一个配置文件,我想以不同的格式解析和写入新文件。
我得到这种格式的变量
include 'includes/foo.inc';
include 'inlcudes/bar.whatever';
键都是字符串,值可以是string,bool,int。
有没有办法以有效的方式解析这个?
答案 0 :(得分:1)
如果我正确理解了这个问题,可以使用以下代码:
ar = ["-key1 val1", "-key2 2", "-key3 true" ]
ar.map { |e| e =~ /\A-(\S+)\s+(.*)\z/ && [$1, $2] }.compact.to_h
#⇒ {
# "key1" => "val1",
# "key2" => "2",
# "key3" => "true"
# }
除了猜测它们之外,没有能力转换类型。当-key value
行存储在文件中时:
File.readlines("path/to/file.cfg").map do |e|
e =~ /\A-(\S+)\s+(.*)\z/ && [$1, $2]
end.compact.to_h