我有一个太大的 XML 文件。为了使其更小,我想用同一事物的较短版本替换所有标签和属性名称。
所以,我实现了这个:
string.gsub!(/<(\w+) /) do |match|
case match
when 'Image' then 'Img'
when 'Text' then 'Txt'
end
end
puts string
它会删除所有开始标签,但不会做太多其他事情。
我在这里做错了什么?
最佳答案
另一种方式:
class String
def minimize_tags!
{"image" => "img", "text" => "txt"}.each do |from,to|
gsub!(/<#{from}\b/i,"<#{to}")
gsub!(/<\/#{from}>/i,"<\/#{to}>")
end
self
end
end
这可能更容易维护,因为替换模式都在一个地方。在任何重要尺寸的字符串上,它可能比凯文的方法快得多。我使用这个 stackoverflow 页面本身的 HTML 源代码作为测试字符串对这两种方法进行了快速测试,我的方法大约快了 6 倍......
关于ruby - 如何使用 Ruby 替换字符串中每次出现的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449692/