专栏
标签
Julia中如何以特定的排序顺序对dir得到的文件列表进行排序
技术分享
发布于 2025-07-22 10:47:56
查看 1过去315天

问题现象

Julia 中如何以特定的排序顺序对 dir 得到的文件列表进行排序?

例如,先按照 DATA 后的数字排序,再按照短横线后的数字进行排序?
image.png

解决方法

在进行文件排序时,可使用 sort! 函数进行排序,传入 lt 参数可进行自定义排序方式。
image.png
1.模拟dir函数生成的文件列表,用以文件排序的输入

function generate_file_names(num_files::Int)
    file_names = String[]
    for _ in 1:num_files
        prefix = "DATA$(rand(1:100))"
        number = rand(0:10000)
        file_name = "$(prefix)_$(number)_mlse.mat"
        push!(file_names, file_name)
    end
    return file_names
end
file_names = generate_file_names(200)

image.png
2.定义一个排序规则函数

function sort_by_prefix_and_number(a::String, b::String)::Bool
    function split_name(file::String)::Tuple{Int64, Int64}
        m::RegexMatch = match(r"DATA(\d+)_(\d+)_", file)
        return (parse(Int, m.captures[1]), parse(Int, m.captures[2]))
    end
    a_prefix, a_number = split_name(a) 
    b_prefix, b_number = split_name(b) 
    return a_prefix != b_prefix ? a_prefix < b_prefix : a_number < b_number
end

3.将该排序规则函数传入sort!函数中,即可实现特定规则排序

sort!(file_names,lt=sort_by_prefix_and_number)

image.png
4.查看是否正确排序

@show file_names

image.png

所属专栏:Julia语言
产品信息:Syslab科学计算环境
其他

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天