4

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

这是否会在性能或风格方面引发危险信号?

4

3 回答 3

7
str.tr('-_', ' ') 

值得考虑(文档

于 2013-02-07T22:04:26.407 回答
1

当链中正则表达式的匹配不应该重叠时,然后在单StringScanner次迭代下的条件内运行它们,同时将结果输出到 aStringIO中可能会提高性能。

于 2013-02-08T00:24:52.047 回答
0

我没有问题。我在我的几个程序中使用了gsub电话号码,并且我没有遇到性能问题。从性能的角度来看,我不会担心它。至于风格,我想这是个人喜好。就我个人而言,我会不惜一切代价避免使用正则表达式。但是,这只是我。

于 2013-02-07T21:43:31.677 回答