我有一个需要排序的列表说:
R1-1
R1-11
R2-2
R1-2
这需要订购:
R1-1
R1-2
R1-11
R2-2
目前我正在使用 C# Regex.Replace 方法并在字符串末尾出现单个数字之前添加一个 0,例如:
Regex.Replace(inString,@"([1-9]$)", @"0$2")
我确信有更好的方法可以做到这一点,但我只是想不出来。 有没有人有使用正则表达式对字母和数字字符串进行排序的好方法?
我使用了下面 Greg 的方法来完成这个,只是想我应该添加我正在使用的代码以确保完整性:
public static List<Rack> GetRacks(Guid aisleGUID)
{
log.Debug("Getting Racks with aisleId " + aisleGUID);
List<Rack> result = dataContext.Racks.Where(
r => r.aisleGUID == aisleGUID).ToList();
return result.OrderBy(r => r.rackName, new NaturalStringComparer()).ToList();
}
最佳答案
我认为您追求的是自然排序顺序,就像 Windows 资源管理器一样?如果是这样,那么我不久前写了一篇博客文章显示 how you can achieve this in a few lines of C# .
注意:我刚刚检查并使用链接条目中的 NaturalStringComparer
确实返回了您使用示例字符串查找的顺序。
关于C# 正则表达式排序字母和数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680692/