关闭

Unity 字符串按自然数排序

标签: unity
2079人阅读 评论(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
查看评论

[Unity Editor]10行代码搞定Hierarchy排序

在日常的工作和研究中,当给我们的场景摆放过多的物件的时候,Hierarchy面板就会变得杂乱不堪。比如这样:     过多的层次结构充斥在里面,根层的物件毫无序列可言,整个层次面板显示非常的杂乱不堪,如果还有使用代码添加的物件,那就更加的惨不忍睹。里面的物件没有任何的规律可言(...
  • e295166319
  • e295166319
  • 2017-03-03 15:14
  • 588

ORACLE 语句字段含有数字,按数字排序

gv_RowCreateed(…) { //鼠标移动到某行时,改变背景色 e.Row.Attributes.Add(“ommouseover”,”currentcolor=this.style.backgroundColor;this.style.backgroundColor=’#eaeae...
  • nsdick19
  • nsdick19
  • 2017-07-14 10:42
  • 117

07.将字符串按首字母排序

对汉语拼音排序,对英文排序
  • qq_26872741
  • qq_26872741
  • 2016-03-15 21:52
  • 1572

字符串按照字典序排序

按照字典序从小到大排序 void sort(int n) { char temp[100]; for(int i=0;i<n-1;i++){ for(int j=0;j<n-1-i;j++){ if(strcmp(st[j],st[...
  • Martind
  • Martind
  • 2016-05-17 12:33
  • 6420

N个自然数的排序算法

有N个大小不等的自然数(1--N),请将它们由小到大排序要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。 void sort(int e[], int n) {      int i;      i...
  • mist99
  • mist99
  • 2014-04-28 18:01
  • 228

按字符串中的数字排序问题

 在.net 的framewrok框架中提供的排序方法中,如string.sort() 或ArrayList.Sort()方法。这两个方法对字符串排序时,如果字符串中含有数字,则不会按数字大小排序。如:如下有四个字符串, ArrayList list = new ArrayLis...
  • otong
  • otong
  • 2008-02-19 12:31
  • 4849

对列表中的字符串,按字符串长度排序

前些天用到了list的sort方法,sort方法的对于字符串的默认排序是按英文字母的顺序来排序的,可是那并不是我想要的结果,我想按字符串的长度来对list排序,这时就需要用到sort方法的参数。 我用的是key,通过制定key就可以对字符串进行排序了,哈哈。当然也有其他方法,以后发现了在发...
  • nrs12345
  • nrs12345
  • 2009-11-28 15:11
  • 7878

ls显示排序

ls 显示目录的内容时,会将文件按a到z的字母顺序显示,优先级如下;数字a-zA-Z也就是说如果不加任何排序的参数,文件名第一个字母是数字的,将优先显示;其次才是A-Z,然后才是a-z;下面是几个排序的参数,大家练习一下就知道了;在文件的大小排序上,我们要用到-S参数;如果是逆序排序时,我们要用到-...
  • fm0517
  • fm0517
  • 2009-11-19 17:27
  • 6216

对以下的三个字符串,按字典顺序将他们排序

#include #include int main() { char *string[]={"Eata structure","A language","Gisual Basic"},*p; int i,j,k; printf...
  • huangjianxiang1875
  • huangjianxiang1875
  • 2012-07-25 18:06
  • 2041

对字符串中的数值进行大小排序

import java.util.Arrays; public class wrappertest { public static void main(String[] args){ String strNum = "12 32 23 87 16"; System.o...
  • z83986976
  • z83986976
  • 2014-08-23 11:40
  • 1126
    个人资料
    • 访问:3547811次
    • 积分:36042
    • 等级:
    • 排名:第137名
    • 原创:402篇
    • 转载:88篇
    • 译文:5篇
    • 评论:3424条
    个人说明
    联系方式:
    文章存档
    最新评论