对于Ruby中的字符串,.gsub和/或.sub方法链是否有任何性能影响?
例如,以下是Rails源中为图像创建alt标记的方法示例。它删除了文件扩展名和摘要(如果有的话)。
def image_alt(src)
File.basename(src, '.*').sub(/-[[:xdigit:]]{32}\z/, '').capitalize
end
在我的应用中,我希望它将下划线或连字符更改为空格,因此我想在最后添加gsub
方法:
def image_alt(src)
File.basename(src, '.*').sub(/-[[:xdigit:]]{32}\z/, '').gsub(/(_|-)/, ' ').capitalize
end
这会在性能或风格方面引发危险吗?
答案 0 :(得分:7)
str.tr('-_', ' ')
值得考虑(doc)
答案 1 :(得分:0)
我没有遇到过问题。我在几个程序中使用了多个gsub
次调用,而且我没有遇到性能问题。从性能角度来看,我不担心。至于风格,我想这是个人喜好。我个人试图不惜一切代价避免使用正则表达式。但那只是我。
答案 2 :(得分:0)
当链中的正则表达式的匹配不应该重叠时,在单个StringScanner
次迭代中在条件下运行它们,同时将结果输出到StringIO
可以提高性能。