我想按照我提到的顺序对字符串数组中的一组固定字符串进行排序,例如“文本文件”,“图像文件”,“音频文件”,“视频文件”,“应用程序文件”,“其他文件” 。
示例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;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)