我有一个字符串和一个默认值为"*"
的哈希:
my_string = "a b c d"
my_hash = Hash.new("*")
my_hash["a"] = 1
my_hash["b"] = 2
然后我做
new_string = my_string.gsub(/[abcd]/, my_hash)
# => "1 2 * *"
如何让new_string
还包含在my_hash
中无法找到并且
new_string # => "1 2 *c *d"
答案 0 :(得分:3)
好吧,我明白了。
而不是使用
将my_hash的默认值设置为“*”my_hash = Hash.new("*")
我做
my_hash = Hash.new{|h,k| h[k] = "*" + k}
现在,如果找到要替换的字符串但在my_hash中没有相应的键(在本例中为“c”和“d”),我将其替换为默认的my_hash值及其本身。
现在new_string是
"1 2 *c *d"
答案 1 :(得分:3)
my_hash = Hash.new{|_, k| "*#{k}"}
my_hash["a"] = 1
my_hash["b"] = 2
my_string.gsub(/[abcd]/, my_hash)
# => "1 2 *c *d"