外部文件中的替换列表

时间:2013-04-10 10:46:33

标签: ruby string csv substitution

我需要针对包含要在每次出现时执行的替换列表的外部文件传递字符串。

替换文件看起来像这样(我对结构有建议,可以是csv,yaml等......)

"ipsum" "foobar"
"elit" ""
"sit amet" "2312"

我的ruby代码应该像这样实现:

mystring = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam quis elit augue. Nulla tempus magna nec ligula dapibus malesuada. Fusce at orci augue, sit amet suscipit sem. Suspendisse potenti."

newstring = mystring.somemagichappenshere

新闻字符串值应为"Lorem foobar dolor 2312, consectetur adipiscing . Aliquam quis augue. Nulla tempus magna nec ligula dapibus malesuada. Fusce at orci augue, 2312 suscipit sem. Suspendisse potenti."

我该如何实现?

2 个答案:

答案 0 :(得分:2)

使用csv:

require 'csv'
str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam quis elit augue. Nulla tempus magna nec ligula dapibus malesuada. Fusce at orci augue, sit amet suscipit sem. Suspendisse potenti."

replacements = "ipsum,foobar
elit,
sit amet,2312"
#construct a hash from the csv:
transform_table = Hash[CSV.parse(replacements)]
#Take the keys from the hash and use them for a regular expression:
re = Regexp.union(transform_table.keys)
#Do all substituions in one go:
p str.gsub(re, transform_table)

答案 1 :(得分:0)

这很简单

  1. 阅读文件
  2. 迭代文件中的每一行,并为每个条目使用mystring.gsub!(find, replace)将值替换为替换
相关问题