你如何强制订购数字

时间:2014-03-13 19:27:20

标签: c# sorting listbox directory

尝试以数字方式对文件进行排序。文件列表:

1.JPG 2.JPG 3.JPG jpg 10.JPG 11.JPG 20.jpg

这个列表将按如下顺序排列:

1.JPG 10.JPG 11.JPG 2.JPG 20.jpg 3.JPG 4.JPG

    private void button1_Click(object sender, EventArgs e)
    {   
        string x = txtPath.Text;
        string[] path = Directory.GetFiles(x);

        string[] filePaths = path;
        foreach (string element in filePaths)
        {
            lb1.Items.Add(Path.GetFileName(element));
        }

        lb1.Sorted = true;
    }

3 个答案:

答案 0 :(得分:0)

他们正在以这种方式排序,因为它们是字符串,并尝试按字典顺序排序。

尝试这样的事情:

string[] line = { "file1.jpg", "file2.jpg", "file10.jpg"};
Regex r = new Regex("/d+");
var result = line.OrderBy(x => r.Match(x).Value);

如果你想要一个字符串,请使用:

string[] result = line.OrderBy(x => r.Match(x).Value).ToArray<string>();

根据您的需要进行调整。

输出是:

文件1

file2的

file10

答案 1 :(得分:0)

您可以提取图片的编号并将其解析为某个int编号,对其进行排序,然后将其放置到扩展名中。

答案 2 :(得分:0)

ls -v * .jpg

检查ls手册页。