c# list<string> 用string中间的一个数字 sort排序
时间: 2024-10-14 17:06:15 浏览: 29
c# List<T>类排序方法
5星 · 资源好评率100%
在C#中,如果你有一个`List<string>`并且想按照字符串中的某个数字进行排序,首先你需要解析每个字符串并提取出那个数字来进行比较。这通常需要自定义一个比较器(Comparator)。假设你想基于字符串中的第二个字符(从0开始计数,即第一个字符的位置为1)进行排序,可以这样做:
```csharp
using System;
using System.Collections.Generic;
class CustomSort
{
class StringNumberComparator : IComparer<string>
{
public int Compare(string x, string y)
{
int index = 1; // 第二个字符的位置
if (int.TryParse(x.Substring(index), out int numX) && int.TryParse(y.Substring(index), out int numY))
{
return numX.CompareTo(numY);
}
else
{
// 如果字符串无法转换成整数,可以在此处处理异常或者默认排序
throw new ArgumentException("Invalid number in the string");
}
}
}
static void Main()
{
List<string> strings = new List<string>() { "12", "9", "5", "36" }; // 示例列表
// 使用自定义比较器进行排序
strings.Sort(new StringNumberComparator());
foreach (var str in strings)
{
Console.WriteLine(str);
}
}
}
```
在这个例子中,`StringNumberComparator`实现了`IComparer<string>`接口,然后在`Compare`方法中比较了每个字符串的第二个字符。注意,如果字符串不能被转换为有效的整数,这个示例会抛出异常。
阅读全文