我使用了一些强力代码来制作罗马数字转换器。我看到5s和10s的干燥机会
out.gsub!('IVI','V')
out.gsub!('IXI','X')
out.gsub!('IXLI','XL')
所以我想做的就是......
out.gsub!(/'I'.'I'/,/./)
哪里'。'是两个'之间的任意数字的字符
有什么想法吗?
答案 0 :(得分:1)
您要找的是/I(.*)I/
,它会将字符串分组为Is。您可以通过\1
访问该代码,生成out.gsub!(/I(.*)I/, '\1')
。
查看正则表达式的文档。 http://ruby-doc.org/core-2.1.1/Regexp.html
答案 1 :(得分:1)
您可以使用\1
,\2
等来使用正则表达式的捕获:
outs = 'IVVVVI'
out.gsub!(/^I(.*)I$/, '\1')
# => "VVVV"
答案 2 :(得分:0)
这可能值得尝试:
out = 'IVVVVI'
out.tr('I','')
# => "VVVV"