我有一个需要按字母数字排序的
E11.9 E13.9 E10.9 E11.65 E10.65 E11.69 E13.10 E10.10
我需要的输出应该像这样: E10.10 E10.65 E10.9 E11.69 E11.9 等等...
我尝试了以下代码:
但是它似乎只按字母顺序排序,然后按小数点前的数字排序。所以我得到了这个:
E10.9
E10.65
E10.10
E11.9
E11.69
等等...
我在正则表达式中漏掉了什么吗?还是有更好的方法来实现这一点?
List<string>
,但其中还包含了小数。示例如下:E11.9 E13.9 E10.9 E11.65 E10.65 E11.69 E13.10 E10.10
我需要的输出应该像这样: E10.10 E10.65 E10.9 E11.69 E11.9 等等...
我尝试了以下代码:
result.Sort((s1, s2) =>
{
string pattern = "([A-Za-z])([0-9]+)";
string h1 = Regex.Match(s1, pattern).Groups[1].Value;
string h2 = Regex.Match(s2, pattern).Groups[1].Value;
if (h1 != h2)
return h1.CompareTo(h2);
string t1 = Regex.Match(s1, pattern).Groups[2].Value;
string t2 = Regex.Match(s2, pattern).Groups[2].Value;
return int.Parse(t1).CompareTo(int.Parse(t2));
});
但是它似乎只按字母顺序排序,然后按小数点前的数字排序。所以我得到了这个:
E10.9
E10.65
E10.10
E11.9
E11.69
等等...
我在正则表达式中漏掉了什么吗?还是有更好的方法来实现这一点?
E
开头,或者至少总是以单个字母开头? - Tim SchmelterE
,但总是一个单字母。 - Kieran Quinn[0-9]
区间内。因此,您需要按E
排序,然后再按点号前的数字排序。 - Grundy