• c# 集合中有数字、字符的Orderby排序


    string[] things= new string[] { "105", "101", "102", "103", "90","a","B" ,"A","b"};
    foreach (var thing in things.OrderBy(x => x))
    {
        Console.WriteLine(thing);
    }
    输出: 101,102,103,105,90,a,A,b,B
    目标输出: 90,101,102,103,105,a,A,b,B
        foreach (var thing in things.OrderBy(x => x, new SemiNumericComparer()))
        {    
            Console.WriteLine(thing);
        }

     

    public class SemiNumericComparer: IComparer<string>
    {
        public int Compare(string s1, string s2)
        {
            if (IsNumeric(s1) && IsNumeric(s2))
            {
                if (Convert.ToInt32(s1) > Convert.ToInt32(s2)) return 1;
                if (Convert.ToInt32(s1) < Convert.ToInt32(s2)) return -1;
                if (Convert.ToInt32(s1) == Convert.ToInt32(s2)) return 0;
            }
            if (IsNumeric(s1) && !IsNumeric(s2))
                return -1;
            if (!IsNumeric(s1) && IsNumeric(s2))
                return 1;
            return string.Compare(s1, s2, false);
        }
        public static bool IsNumeric(object value)
        {
            try {
                int i = Convert.ToInt32(value.ToString());
                return true; 
            }
            catch (FormatException) {
                return false;
            }
        }
    }
  • 相关阅读:
    iOS开发UI篇—控制器的View的创建
    iOS开发UI篇—控制器的创建
    OS开发UI篇—UIWindow简单介绍
    iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
    A1089. Insert or Merge
    A1044. Shopping in Mars
    A1010. Radix
    A1085. Perfect Sequence
    散列、贪心总结
    A1038. Recover the Smallest Number
  • 原文地址:https://www.cnblogs.com/94cool/p/9314685.html
Copyright © 2020-2023  润新知