在.NET平台下,可以使用《Numeric String Sort in C#》文章里提供的方法。

Unity平台

在编辑器下,可以使用 EditorUtility.NaturalCompare 接口,运行时的话,只能使用.NET平台的方法。

测试代码如下:

private void Test()
    List<string> names = new List<string>();
    names.Add("1.txt");
    names.Add("a10b1.txt");
    names.Add("a1b1.txt");
    names.Add("10.txt");
    names.Add("3.txt");
    names.Sort();
    foreach (var n in names)
        Debug.Log(n);
    names.Sort(EditorUtility.NaturalCompare);
    foreach (var n in names)
        Debug.Log(n);

运行结果前后对比如下:
Unity 字符串按自然数排序_字符串
Unity 字符串按自然数排序_unity_02