using System;
using System.Linq;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
public class Test
{
public static void Main()
{
var strings = new List<string>() {
"RS01","RS05A","RS10","RS102","RS105A","RS105B","RS32A","RS80"
};
var sorted = strings.Select(str => new
{
str,
num = int.Parse(new string(str.Skip(2).TakeWhile(Char.IsDigit).ToArray())),
containsVersion = str.Skip(2).SkipWhile(Char.IsDigit).Any()
}).Select(x => new{x.str, x.num, x.containsVersion,
version = !x.containsVersion ? "" : new string(x.str.Skip(2).SkipWhile(Char.IsDigit).ToArray())
})
.OrderBy(x => x.num).ThenBy(x => x.version);
foreach(var x in sorted)
Console.WriteLine(x.str);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOwp1c2luZyBTeXN0ZW0uTmV0OwoKCgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgICAgICB2YXIgc3RyaW5ncyA9IG5ldyBMaXN0PHN0cmluZz4oKSB7IAogICAgICAgICAgICAgICAgIlJTMDEiLCJSUzA1QSIsIlJTMTAiLCJSUzEwMiIsIlJTMTA1QSIsIlJTMTA1QiIsIlJTMzJBIiwiUlM4MCIKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIHNvcnRlZCA9IHN0cmluZ3MuU2VsZWN0KHN0ciA9PiBuZXcKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3RyLAogICAgICAgICAgICAgICAgbnVtID0gaW50LlBhcnNlKG5ldyBzdHJpbmcoc3RyLlNraXAoMikuVGFrZVdoaWxlKENoYXIuSXNEaWdpdCkuVG9BcnJheSgpKSksCiAgICAgICAgICAgICAgICBjb250YWluc1ZlcnNpb24gPSBzdHIuU2tpcCgyKS5Ta2lwV2hpbGUoQ2hhci5Jc0RpZ2l0KS5BbnkoKQogICAgICAgICAgICB9KS5TZWxlY3QoeCA9PiBuZXd7eC5zdHIsIHgubnVtLCB4LmNvbnRhaW5zVmVyc2lvbiwgCiAgICAgICAgICAgICAgICB2ZXJzaW9uID0gIXguY29udGFpbnNWZXJzaW9uID8gIiIgOiBuZXcgc3RyaW5nKHguc3RyLlNraXAoMikuU2tpcFdoaWxlKENoYXIuSXNEaWdpdCkuVG9BcnJheSgpKQogICAgICAgICAgICB9KQogICAgICAgICAgICAuT3JkZXJCeSh4ID0+IHgubnVtKS5UaGVuQnkoeCA9PiB4LnZlcnNpb24pOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yZWFjaCh2YXIgeCAgaW4gc29ydGVkKQogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoeC5zdHIpOwoJfSAgIAp9CgogICAgCg==