gpt4 book ai didi

ruby - 通过正则表达式对数组进行排序的更好方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:57 24 4
gpt4 key购买 nike

我有这个数组:

arr = ["/Users/user/Documents/public/170/41/texts/10.txt",
"/Users/user/Documents/public/170/41/texts/11.txt",
"/Users/user/Documents/public/170/41/texts/12.txt",
"/Users/user/Documents/public/170/41/texts/14.txt",
"/Users/user/Documents/public/170/41/texts/15.txt",
"/Users/user/Documents/public/170/41/texts/18.txt",
"/Users/user/Documents/public/170/41/texts/6.txt",
"/Users/user/Documents/public/170/41/texts/8.txt"]

我想按 .txt 文件的整数值对其进行排序。我这样做:

arr.sort_by{|h| h.scan(/(\d+)\.txt/).flatten[0].to_i}

我想知道 - 有更好的方法吗?

最佳答案

使用basename而不是自己解析路径:

arr.sort_by { |path| File.basename(path, '.txt').to_i }

这会显着提高性能(arr 的大小为 20,000):

require 'benchmark'

Benchmark.bm(12) do |x|
x.report("regex: ") { arr.sort_by { |h| h.scan(/(\d+)\.txt/).flatten[0].to_i } }
x.report("basename: ") { arr.sort_by { |path| File.basename(path, '.txt').to_i } }
end

# user system total real
# regex: 0.170000 0.010000 0.180000 ( 0.169097)
# basename: 0.020000 0.000000 0.020000 ( 0.022535)

关于ruby - 通过正则表达式对数组进行排序的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11710820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com