【代码】C#把string字符按中文,英文,日文,韩文排序

2020-09-04 10:05:37  阅读 863 次 评论 0 条

C#按照语言优先级排序

中文>英文>日文>韩文

下面附上代码,欢迎大佬来喷,我是弟弟=_=

     static void Main(string[] args)
        {

            List<string> strs = new List<string>();
            strs.Add("dweduwwegd");
            strs.Add("a123456");
            strs.Add("是edegyweuid");
            strs.Add("wswあ的wswwsa");
            strs.Add("纯中文");
            strs.Add("纯中文哈哈哈");
            strs.Add("ええ中文啊啊啊");
            strs.Add("えええええええ");
            strs.Add("한국어");
            strs.Add("sxxw한국어한국어wuswusw");
            strs.Add("한국어swsw");

            List<string> nlist = orderByName(strs);

        }

        public static List<string> orderByName(List<string> names)
        {
            Regex cn_rx = new Regex("^[\u4e00-\u9fa5]$");//中文字符unicode范围  
            Regex jp_rx = new Regex("^[\u0800-\u4e00]$");//日文字符unicode范围
            Regex kr_rx = new Regex("^[\uac00-\ud7ff]$");//韩文字符unicode范围
            Regex en_rx = new Regex("^[a-zA-Z0-9]$");//带英文

            List<string> cn_list = new List<string>();//纯中文集合
            List<string> jp_list = new List<string>();//带日文集合
            List<string> kr_list = new List<string>();//带韩文集合
            List<string> en_list = new List<string>();//带英文集合


            List<string> res_list = new List<string>();//最后的集合

            #region 做字符处理
            foreach (string s in names)
            {
                
                string str = s;
                for (int i = 0; i < str.Length; i++)
                {
                    //这里的优先级按中文>英文>日文>韩文排序的
                   
                    #region 带韩文
                    if (kr_rx.IsMatch(str[i].ToString()))
                    {
                        kr_list.Add(s);
                        break;
                    }
                    #endregion
                    #region 带日文
                    if (jp_rx.IsMatch(str[i].ToString()))
                    {
                        jp_list.Add(s);
                        break;
                    }
                    #endregion
                    #region 带英文
                    if (en_rx.IsMatch(str[i].ToString()))
                    {
                        en_list.Add(s);
                        break;
                    }
                    #endregion
                    #region 纯中文
                    if (cn_rx.IsMatch(str[i].ToString()))
                    {

                        //匹配上了,并且是最后一个
                        if (i == str.Length - 1)
                        {
                            cn_list.Add(s);
                            break;
                        }

                    }
                    #endregion

                    
                }
            }
            #endregion


            #region 最后把数组拼接
            res_list = cn_list.Concat(en_list).Concat(jp_list).Concat(kr_list).ToList() ;

            #endregion

            return res_list;
        }



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2099
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?