2016-02-26 25 views
-2

我有一個配置文件,我想解析並以不同格式寫入新文件。如何解析配置文件中的變量

我得到這種格式

args([ 
"-key1 val1", 
"-key2 2", 
"-key3 true" 
]) 

鍵都是字符串變量,值可以是字符串,BOOL,INT。

是有辦法以有效的方式來分析呢?

回答

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 
+0

我正在讀取用戶寫入的文件。一個給出的關鍵值就是一個例子。 所以我正在尋找更通用的東西。謝謝 – ilan

+0

我給出的示例是我試圖閱讀的文件的一部分 – ilan

+0

「更通用」是什麼意思?雖然文件由'-key value'行組成,這段代碼工作得很好。無論您希望獲得其他輸入,請明確指定。 – mudasobwa