高血压专题网,内容丰富有趣,生活中的好帮手!
高血压专题网 > C#按汉字拼音首字母排序

C#按汉字拼音首字母排序

时间:2021-04-26 13:50:46

相关推荐

C#按汉字拼音首字母排序

可参考以下博客。

C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母 - 影子科技 - 博客园

/yazdao/archive//06/04/2072488.html

C#汉字转换拼音技术详解(高性能) - 历史的驱动 - 博客园

/lilin123/archive//11/01/2749169.html

按汉字的拼音排序(c#实现) - 焦涛 - 博客园

/Joetao/articles/500.html

汉字转换为汉语拼音(全拼/首字母简拼) - 任家 - 博客园

/Gnepner/archive//08/08/2130727.html

一、首先将汉字转为拼音首字母缩写

使用微软提供的方法获取到的是全拼再截取,故效率较低,以下为最终使用的代码。

public staticstring GetFirstPY(stringstr)

{

string ret = string.Empty;

foreach (char cin str)

{

ret += GetPYChar(c);

}

return ret;

}

private static string GetPYChar(charc)

{

string str = c.ToString();

if ((int)c>= 32 && (int)c <= 126)

{

return str;

}

byte[] array = newbyte[2];

array = System.Text.Encoding.Default.GetBytes(str);

int i = (short)(array[0]- '\0') * 256 + ((short)(array[1]- '\0'));

if (i < 0xB0A1) return"*";

if (i < 0xB0C5) return"A";

if (i < 0xB2C1) return"B";

if (i < 0xB4EE) return"C";

if (i < 0xB6EA) return"D";

if (i < 0xB7A2) return"E";

if (i < 0xB8C1) return"F";

if (i < 0xB9FE) return"G";

if (i < 0xBBF7) return"H";

if (i < 0xBFA6) return"J";

if (i < 0xC0AC) return"K";

if (i < 0xC2E8) return"L";

if (i < 0xC4C3) return"M";

if(i < 0xC5B6) return "N";

if (i < 0xC5BE) return"O";

if (i < 0xC6DA) return"P";

if (i < 0xC8BB) return"Q";

if (i < 0xC8F6) return"R";

if (i < 0xCBFA) return"S";

if (i < 0xCDDA) return"T";

if (i < 0xCEF4) return"W";

if (i < 0xD1B9) return"X";

if (i < 0xD4D1) return"Y";

if (i < 0xD7FA) return"Z";

return "*";

}

二、构建一个List,保存汉字和其对应拼音缩写,然后排序。

str = str.OrderBy(x => x.pinyin).ToList();

即可获得排序后的列表。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。