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; }
微信扫码查看本文
发表评论