【问题标题】:How do you force ordering to be numeric你如何强制排序为数字
【发布时间】:2014-03-13 19:27:19
【问题描述】:

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

1.jpg 2.jpg 3.jpg 4.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;
    }

【问题讨论】:

标签: c# sorting listbox directory


【解决方案1】:

它们是这样排序的,因为它们是字符串,并尝试按字典顺序排序。

试试这样的:

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

文件2

文件10

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      ls -v *.jpg

      查看 ls 手册页。

      【讨论】:

      • 列表成一个变量:Files=ls -v *.jpg 然后回显并剪切。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多