給定一些數(shù)據(jù),如下所示:
“1.10.1.1.1.2”,
“1.1”,
“2.2”,
“1.1.1.1”,
“1.1.3.1”,
“1.1.1”,
“2.10.1.1.1”,
“1.1.2.1”,
“1.2.1.1”,
“2.5.1.1”,
“1.10.1.1”,
“1.10.2.1”,
“1.11.3.1”,
“1.11.12.1”,
“1.11.11.1”,
“1.11.3.1”,
“1”,
“1.1.1.1.1”,
“1.1.1.1.1.1”
實現(xiàn)效果:
按照每個節(jié)點層級的大小進行排序,如下效果:
實現(xiàn)代碼如下:
- 引入命名空間:
using System;
using System.Collections.Generic;
這里引入了兩個命名空間,System
命名空間提供了訪問常用的數(shù)據(jù)類型和基本功能的類,System.Collections.Generic
命名空間則包含了泛型集合類的定義,如 List<T>
。
- 自定義比較器類:
class CustomComparer : IComparer<string>
{
// Compare 方法用于比較兩個字符串,實現(xiàn)了 IComparer<string> 接口
public int Compare(string x, string y)
{
// 將版本號字符串按 '.' 分隔為字符串?dāng)?shù)組
string[] partsX = x.Split('.');
string[] partsY = y.Split('.');
// 找出兩個數(shù)組的最小長度
int minLength = Math.Min(partsX.Length, partsY.Length);
// 逐個比較每個部分的版本號
for (int i = 0; i < minLength; i++)
{
int numX = int.Parse(partsX[i]); // 將部分轉(zhuǎn)換為整數(shù)
int numY = int.Parse(partsY[i]);
// 如果當(dāng)前部分的版本號不相等,則返回比較結(jié)果
if (numX != numY)
{
return numX.CompareTo(numY); // 返回整數(shù)的比較結(jié)果
}
}
// 如果前面的部分都相等,比較版本號的長度
return partsX.Length.CompareTo(partsY.Length);
}
}
這個類實現(xiàn)了 IComparer<string>
接口,該接口定義了比較兩個字符串的方法。CustomComparer
類中的 Compare
方法根據(jù)版本號的每個部分逐個比較,如果發(fā)現(xiàn)不同的部分,就返回比較結(jié)果;如果所有部分都相同,則比較字符串的長度。文章來源:http://www.zghlxwxcb.cn/news/detail-668440.html
- 主程序類:
class Program
{
static void Main()
{
// 創(chuàng)建一個包含版本號字符串的列表
List<string> data = new List<string>
{
"1.10.1.1.1.2",
"1.1",
"2.2",
"1.1.1.1",
"1.1.3.1",
"1.1.1",
"2.10.1.1.1",
"1.1.2.1",
"1.2.1.1",
"2.5.1.1",
"1.10.1.1",
"1.10.2.1",
"1.11.3.1",
"1.11.12.1",
"1.11.11.1",
"1.11.3.1",
"1",
"1.1.1.1.1",
"1.1.1.1.1.1"
};
// 使用自定義比較器對列表進行排序
data.Sort(new CustomComparer());
// 遍歷排序后的列表并輸出結(jié)果
foreach (var item in data)
{
Console.WriteLine(item);
}
}
}
在主程序類中,首先創(chuàng)建了一個包含版本號字符串的列表 data
,然后使用 Sort
方法對列表進行排序,傳入了一個自定義的比較器 CustomComparer
實例。最后,通過循環(huán)遍歷排序后的列表,并將每個元素輸出到控制臺。 使用自定義的比較器對版本號字符串進行排序,排序規(guī)則是按照版本號的每個部分逐個比較,優(yōu)先比較較低級別的部分,如果所有部分相等,則比較字符串的長度。排序結(jié)果會按照版本號從小到大的順序輸出。文章來源地址http://www.zghlxwxcb.cn/news/detail-668440.html
到了這里,關(guān)于C#使用自定義的比較器對版本號(編碼)字符串進行排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!