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