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