/// <summary>
/// 文字转拼音排序
/// </summary>
public class ChineseNameComparer : IComparer<string>
{
public int Compare(string x, string y)
{
CultureInfo cultureInfo = new CultureInfo("zh-CN");
string pinyinX = GetPinYin(x, cultureInfo);
string pinyinY = GetPinYin(y, cultureInfo);
return string.CompareOrdinal(pinyinX, pinyinY);
}
private string GetPinYin(string input, CultureInfo cultureInfo)
{
// 使用System.Globalization.ChineseCharacter toPinYin()将中文转换为拼音
string pinyin = "";
foreach (char c in input)
{
if (ChineseChar.IsValidChar(c))
{
ChineseChar chineseChar = new ChineseChar(c);
pinyin += chineseChar.Pinyins[0].ToString().Substring(0, 1);
}
else
{
pinyin += c.ToString();
}
}
return pinyin;
}
}
需要引入 ChnCharInfo.dll
ChineseNameComparer comparer = new ChineseNameComparer();
// namelist存入名字的list
namelist.Sort((x, y) => comparer.Compare(x, y));
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < namelist.Count; i++)
{
sb2.Append(namelist[i] + ",");
}
print(sb2);