无幻

潜心成魔.....

Unity 字符串按自然数排序

背景

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

排序方式对比如下:

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

运行结果前后对比如下:

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/akof1314/article/details/50499014
文章标签: unity
个人分类: 3.3 Unity
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Unity 字符串按自然数排序

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭