c# - 按自定义顺序对字符串数组进行排序

标签 c# sorting arrays

我想以相同的顺序对字符串数组中的一组固定字符串(如“文本文件”、“图像文件”、“音频文件”、“视频文件”、“应用程序文件”、“其他文件”)进行排序我已经提到了。

例子1,如果我的字符串数组输入是这样的

inputval[0] = "Other files";
inputval[1] = "Image files";
inputval[2] = "Text files";

我的输出数组应该有这样的值

outputval[0] = "Text files";
outputval[1] = "Image files";
outputval[2] = "Other files";

例子2,如果我的字符串数组输入是这样的

inputval[0] = "Application files";
inputval[1] = "Image files";
inputval[2] = "Video files";

我的输出数组应该有这样的值

outputval[0] = "Image files";
outputval[1] = "Video files";
outputval[2] = "Application files";

有人可以帮我实现这个

最佳答案

这个粗略的实现使用 IComparer<string>提供给 Array.Sort作品。有各种潜在的缺点,但我会把这些留给你(比如字符串需要完全匹配,否则它们将无法正确排序)。

它只是使用表示正确顺序的内部字符串列表,然后将它们在该列表中的序数相互比较。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication61
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = new[] { "Audio Files", "Text Files", "Video Files", "Other Files", "Application Files" };
            Array.Sort(files, new FileComparer());
            Console.Read();
        }
    }

    class FileComparer : IComparer<string>
    {
        static List<string> OrderedFiles = new List<string> { "Text Files", "Image Files", "Audio Files", "Video Files", "Application Files", "Other Files" };

        public int Compare(string x, string y)
        {
            int xi = OrderedFiles.IndexOf(x);
            int yi = OrderedFiles.IndexOf(y);

            if (xi > yi)
                return 1;

            if (xi < yi)
                return -1;

            return 0;
        }
    }
}

关于c# - 按自定义顺序对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781914/

相关文章:

c# - 与我的开发机器相比,为什么 Uri.EscapeDataString 在我的 CI 服务器上返回不同的结果?

c# - 调试后台 worker

javascript - 按键值对对象排序

java - 复制数组或强制 ArrayList 指定初始大小。什么更有效?

c# - 是否有用于命令行/控制台程序的开源 C# 库?

c# - 如何使用 C# 比较两个列表?

Python:使用另一个列表作为顺序对列表进行排序

python - Pandas 列在一个组内排序,忽略其他列

PHP 类更新数组 - 如何提高效率

javascript - 使用正则表达式将 JS 中的大字符串文字解析为对象数组