我有一个包含 SQL 转储行的文件。它的日期格式为yyyy-mm-dd
(例如。2012-08-13
)
我想用标记替换所有这些日期,以便将来我可以使用所有以当时日期为中心的行来填充数据库。
例如
2012-08-13
我想更改为存储为类似$$MAINDATE$$
2012-08-14
我想成为$$MAINDATE+1$$
这样,它们都相对于单个日期存储,并且数据在新创建日期前后都有意义。
然后我想迭代文件并将它们全部替换为基于当时参数的新日期。并根据 +1 或 +100 调整日期,或者在最后几天。
我认为匹配文本是/\d{4}-\d{2}-\d{2}/
但是如何替换与占用并替换旧文本的新术语匹配的文本?
更新:
我用它把标记改回日期。我怀疑它很漂亮,但它的工作原理
#iterate each line and look for the marker
while (line = infile.gets)
str = line
#replace marker with data modified by the modifier
rules = Hash[str.scan(/(\$\$MAINDATE(\+|\-)\d{1,5}\$\$)/).uniq.collect do |e|
modifyValue = e[0].split(e[1])[1].gsub("$","").to_i
if e[1] == "-" then
modifyValue = modifyValue * -1
end
[e[0], (today + modifyValue).to_s]
end ]
rules.each do |key, value|
str.gsub!(key, value)
end
#write new line to array
finishedText.push str
end