关闭

Unity 字符串按自然数排序

标签: unity
1969人阅读 评论(2) 收藏 举报
分类:

背景

在对列表里的字符串进行排序时,当存在有自然数时,想要让之以自然数顺序进行排序,然而默认的排序是不支持自然数排序的,需要自己实现。

排序方式对比如下:

Alphabetic sort Natural numeric sort
DOS (CMD prompt) style Windows Explorer Style
1.txt 1.txt
10.txt 3.txt
3.txt 10.txt
a10b1.txt a1b1.txt
a1b1.txt a2b1.txt
a2b1.txt a2b2.txt
a2b11.txt a2b11.txt
a2b2.txt a10b1.txt
b1.txt b1.txt
b10.txt b2.txt
b2.txt b10.txt

实现

.NET平台

在.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);
    }
}

运行结果前后对比如下:

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3432955次
    • 积分:35457
    • 等级:
    • 排名:第137名
    • 原创:399篇
    • 转载:88篇
    • 译文:5篇
    • 评论:3417条
    个人说明
    联系方式:
    文章存档
    最新评论