我想在这里做的是在每个常量之后插入um
。我必须传递添加了um
的字符串的每个字符,然后将其传递给与该方法关联的块。我不明白如何通过块实例化将字符传递给块。
class Um
def to_um( string )
string.gsub(/(?<=[^aeiou])/, 'um') do |v|
"#{v}"
end
end
def to_english( string )
# will output the to_um method back to english
end
end
Um.to_um( "Watch this get converted to yum!" ) { |v| print v }
应输出:
Wumatumcumhum tumhumisum gumetum cumonumvumerumtumedum tumo yumumum!
答案 0 :(得分:1)
gsub
使用块或替换参数,而不是两者。如果要使用块来替换匹配,则需要省略第二个参数:
string.gsub(/(?<=[^aeiou])/) { |m| "#{m}um" }
请注意,此处无需使用块,您可以使用\1
在替换参数中包含匹配的字符:
string.gsub(/(?<=[^aeiou])/, '\1um')
答案 1 :(得分:1)
CONSONANTS = "bcdfghjklmnpqrstvwxyz"
def to_um(str)
str.gsub(/(?<=[#{CONSONANTS}])/i, 'um')
end
str = "Watch this get converted to yum!"
to_um(str)
#=> "Watumcumhum tumhumisum gumetum cumonumvumerumtumedum tumo yumumum!"
正则表达式上写着,“在正面观察中匹配一个辅音,大小写无关紧要。如果有匹配,辅音后面的零长度字符串将替换为"um"
。