在Go中按数字顺序对文件进行排序

第3天:

我正在阅读目录,并注意到这个目录,如果我有按数字(1、2、3、4 ...)排序的文件,则似乎使用了一些字母顺序。

假设我有13个文件(分别命名为1.md,2.md,3.md ...),则顺序如下:1,10,11,12,12,13,2,3,4 ...; 我用来生成此订单的当前代码是:

files, _ := ioutil.ReadDir(my_dir)
    for _, f := range files {
        fmt.Println(f.Name())
    }

我要查找的顺序是1、2、3,... 9、10、11、12、13。

如何对这些文件进行严格的数字排序?请记住,每个文件都被命名为N.md,其中N被保证为大于或等于0的整数。

谢谢。

本·坎贝尔:

您可以根据需要实现排序界面和排序吗?给定返回的os.FileInfo元素的切片,您可以使用数字顺序而不是字典顺序来排列它们。

type ByNumericalFilename []os.FileInfo

func (nf ByNumericalFilename) Len() int      { return len(nf) }
func (nf ByNumericalFilename) Swap(i, j int) { nf[i], nf[j] = nf[j], nf[i] }
func (nf ByNumericalFilename) Less(i, j int) bool {

    // Use path names
    pathA := nf[i].Name()
    pathB := nf[j].Name()

    // Grab integer value of each filename by parsing the string and slicing off
    // the extension
    a, err1 := strconv.ParseInt(pathA[0:strings.LastIndex(pathA, ".")], 10, 64)
    b, err2 := strconv.ParseInt(pathB[0:strings.LastIndex(pathB, ".")], 10, 64)

    // If any were not numbers sort lexographically
    if err1 != nil || err2 != nil {
        return pathA < pathB
    }

    // Which integer is smaller?
    return a < b
}

files, _ := ioutil.ReadDir(".")

sort.Sort(ByNumericalFilename(files))

for _, f := range files {
    fmt.Println(f.Name())
}

我知道它不是很简洁,但是是一个有效的答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按数字顺序对文件进行排序

按特定顺序对文件进行排序

如何按数字顺序和修改的时间顺序对文件名进行排序?

如何按数字而不是字母顺序对文件名集合进行排序?

按名称对文件进行数字排序,然后按BASH中的父目录排序

在Android中按字母顺序对文件列表,文件夹和文件进行排序

按数字顺序对文件进行排序,同时排除具有非数字文件名的文件

仅按姓氏字母顺序对文件进行排序

在处理之前按字母顺序对文件进行排序

如何按字母顺序对文件进行排序?

对第一个数字按降序对文件中的数字进行冒泡排序

在C中按字母顺序对文件中的结构进行排序

如何使用gedit按字母顺序对文本文件中的行进行排序

使用Python中的第二列按字母顺序对文本文件进行排序

按字母顺序对文本中的字母出现进行排序

按字段对文件内容进行数字排序

按数字值对文件名进行排序

按数字对文件进行排序并在 Bash 中的条目之间保留空行

如何使用Linux命令Sort按第4列(数字顺序)对文本文件进行排序?

按字母顺序对文件排序

按名称中的日期对文件数组进行排序

在Powershell中按版本号对文件进行排序

在Ant中以数字方式对文件集进行排序

Python:如何按数字顺序对.txt文件的内容进行排序?

按位数对文件版本进行排序

如何对文件进行数字排序?

使用字符串值按特定顺序对文件内容进行排序

如何使用python按特定顺序对文件名进行排序

如何按字母顺序对文件的各个部分进行排序?