【发布时间】:2016-04-16 04:16:11
【问题描述】:
我使用gsub! 将匹配项替换为带有哈希值的哈希键。例如:
def replace_string(string = "@ReplaceMe[xyz]@@ReplaceMe[123]@Hello")
generator_replacements = {
"@ReplaceMe[xyz]@" => "Time",
"@ReplaceMe[123]@" => "Date"
}
generator_replacements.each{
|generator, replacement|
string = string.gsub!(generator.to_s, replacement.to_s)
puts string
}
end
replace_string
输出:
TimeDateHelloTimeDateHello
我不明白为什么gsub! 一次性替换所有哈希键,而不是每次迭代。当我尝试使用gsub 时,它会替换为每次迭代:
Time@ReplaceMe[123]@HelloTimeDateHello
有人可以解释为什么会这样吗?
【问题讨论】:
-
这不是有效的语法。您不要在 Ruby 中的方法定义周围使用花括号。
generated_string是什么?我有一种感觉,这不是您的实际工作(或不工作)代码。请编辑您的问题以包含您的实际代码。 -
你能想出一个使用不那么神秘的占位符名称的例子吗?
-
什么是
generated_string? -
@Jordan 这不是我的实际代码,正确。出于保密原因,我需要在此处发布之前删除任何实际变量名称和数据的痕迹。我现在已将
generated_string更正为string