汉字转换为拼音
引用自:http://www.cnblogs.com/gishawk/archive/
1
/// <summary>
2
/// 将汉字转换成为拼音
3
/// </summary>
4
public class Chs2Py
5
{
6
private static int[] pyvalue = new int[]{ -20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,
7
-20242,-20230,-20051,-20036,-20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,
8
-19775,-19774,-19763,-19756,-19751,-19746,-19741,-19739,-19728, -19725,-19715,-19540,-19531,
9
-19525,-19515,-19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263, -19261,
10
-19249,-19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006,
11
-19003,-18996,-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735,-18731,
12
-18722,-18710,-18697,-18696,-18526, -18518,-18501,-18490,-18478,-18463,-18448,-18447,-18446,
13
-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183,-18181,-18012,-17997,-17988,-17970,
14
-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752,-17733,-17730,-17721,-17703,
15
-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482,-17468,-17454,-17433,-17427,-17417,
16
-17202,-17185,-16983,-16970,-16942,-16915,-16733,-16708,-16706,-16689,-16664,-16657,-16647,
17
-16474,-16470,-16465,-16459,-16452,-16448,-16433,-16429,-16427,-16423,-16419,-16412,-16407,
18
-16403,-16401,-16393,-16220,-16216,-16212,-16205,-16202,-16187,-16180,-16171,-16169,-16158,
19
-16155,-15959,-15958,-15944,-15933,-15920,-15915,-15903,-15889,-15878, -15707,-15701,-15681,
20
-15667,-15661,-15659,-15652,-15640,-15631,-15625,-15454,-15448,-15436,-15435,-15419,-15416,
21
-15408,-15394,-15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153,
22
-15150,-15149,-15144, -15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109,
23
-14941,-14937,-14933,-14930,-14929,-14928,-14926,-14922,-14921,-14914,-14908,-14902,-14894,
24
-14889,-14882,-14873,-14871,-14857,-14678,-14674,-14670,-14668, -14663,-14654,-14645,-14630,
25
-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353,-14345,-14170,-14159,-14151,
26
-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112,-14109,-14099,-14097,-14094,
27
-14092,-14090, -14087,-14083,-13917,-13914,-13910,-13907,-13906,-13905,-13896,-13894,-13878,
28
-13870,-13859,-13847,-13831,-13658, -13611,-13601,-13406,-13404,-13400,-13398,-13395,-13391,
29
-13387,-13383,-13367,-13359,-13356,-13343,-13340,-13329,-13326,-13318,-13147,-13138,-13120,
30
-13107,-13096,-13095,-13091,-13076,-13068,-13063,-13060,-12888,-12875,-12871,-12860,-12858,
31
-12852,-12849,-12838,-12831,-12829,-12812,-12802,-12607,-12597,-12594,-12585,-12556,-12359,
32
-12346, -12320,-12300,-12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,
33
-11831,-11798,-11781,-11604,-11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,
34
-11067,-11055,-11052,-11045,-11041,-11038,-11024,-11020,-11019,-11018,-11014,-10838,-10832,
35
-10815,-10800,-10790,-10780,-10764,-10587,-10544,-10533,-10519,-10331, -10329,-10328,-10322,
36
-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256,-10254};
37
private static string[] pystr = new string[]{"a","ai","an","ang","ao","ba","bai","ban","bang","bao","bei","ben","beng","bi","bian","biao","bie","bin","bing","bo","bu","ca","cai","can","cang","cao","ce","ceng","cha","chai","chan","chang","chao","che","chen","cheng","chi","chong","chou","chu","chuai","chuan","chuang","chui","chun","chuo","ci","cong","cou","cu","cuan","cui","cun","cuo","da","dai","dan","dang","dao","de","deng","di","dian","diao","die","ding","diu","dong","dou","du","duan","dui","dun","duo","e","en","er","fa","fan","fang","fei","fen","feng","fo","fou","fu","ga","gai","gan","gang","gao","ge","gei","gen","geng","gong","gou","gu","gua","guai","guan","guang","gui","gun","guo","ha","hai","han","hang", "hao","he","hei","hen","heng","hong","hou","hu","hua","huai","huan","huang","hui","hun","huo","ji","jia","jian","jiang","jiao","jie","jin","jing","jiong","jiu","ju","juan","jue","jun","ka","kai","kan","kang","kao","ke","ken","keng","kong","kou","ku","kua","kuai","kuan","kuang","kui","kun","kuo","la","lai","lan","lang","lao","le","lei","leng","li","lia","lian","liang","liao","lie","lin","ling","liu","long","lou","lu","lv","luan","lue","lun","luo","ma","mai","man","mang","mao","me","mei","men","meng","mi","mian","miao","mie","min","ming","miu","mo","mou","mu", "na","nai","nan","nang","nao","ne","nei","nen","neng","ni","nian","niang","niao","nie","nin","ning","niu","nong", "nu","nv","nuan","nue","nuo","o","ou","pa","pai","pan","pang","pao","pei","pen","peng","pi","pian","piao","pie", "pin","ping","po","pu","qi","qia","qian","qiang","qiao","qie","qin","qing","qiong","qiu","qu","quan","que","qun", "ran","rang","rao","re","ren","reng","ri","rong","rou","ru","ruan","rui","run","ruo","sa","sai","san","sang","sao","se","sen","seng","sha","shai","shan","shang","shao","she","shen","sheng","shi","shou","shu","shua","shuai","shuan","shuang","shui","shun","shuo","si","song","sou","su","suan","sui","sun","suo","ta","tai","tan","tang","tao","te","teng","ti","tian","tiao","tie","ting","tong","tou","tu","tuan","tui","tun","tuo","wa","wai","wan","wang","wei","wen","weng","wo","wu","xi","xia","xian","xiang","xiao","xie","xin","xing","xiong","xiu","xu","xuan","xue","xun","ya","yan","yang","yao","ye","yi","yin","ying","yo","yong","you", "yu","yuan","yue","yun","za","zai","zan","zang","zao","ze","zei","zen","zeng","zha","zhai","zhan","zhang", "zhao","zhe","zhen","zheng","zhi","zhong","zhou","zhu","zhua","zhuai","zhuan","zhuang","zhui","zhun","zhuo", "zi","zong","zou","zu","zuan","zui","zun","zuo"};
38
39
/// <summary>
40
/// 构造函数
41
/// </summary>
42
public Chs2Py()
43
{
44
}
45
46
/// <summary>
47
/// 静态转换方法 得到输入汉字字符串的对应拼音
48
/// </summary>
49
/// <param name="chrstr">汉字字符串</param>
50
/// <returns>返回对应的拼音</returns>
51
public static string Convert(string chrstr)
52
{
53
byte[] byteArray = new byte[2];
54
string returnStr = "";
55
int chrAsc = 0;
56
int i1 = 0;
57
int i2 = 0;
58
char[] nowChar = chrstr.ToCharArray();
59
for (int j = 0; j < nowChar.Length; j++)
60
{
61
byteArray = Encoding.Default.GetBytes(nowChar[j].ToString());
62
i1 = (short)byteArray[0];
63
i2 = (short)byteArray[1];
64
chrAsc = i1 * 256 + i2 - 65536;
65
if (chrAsc > 0 && chrAsc < 160)
66
{
67
returnStr += nowChar[j];
68
}
69
else
70
{
71
for (int i = (pyvalue.Length - 1); i >= 0; i--)
72
{
73
if (pyvalue[i] <= chrAsc)
74
{
75
returnStr += pystr[i];
76
break;
77
}
78
}
79
}
80
}
81
82
return returnStr;
83
}
84
85
/// <summary>
86
/// 得到汉字拼音缩写
87
/// </summary>
88
/// <param name="str">汉字字符串</param>
89
/// <returns>返回汉字字符串的的拼音缩写</returns>
90
public string GetPYString(string str)
91
{
92
string tempStr = "";
93
foreach (char c in str)
94
{
95
if ((int)c >= 33 && (int)c <= 126)
96
{
97
//字母和符号原样保留
98
tempStr += c.ToString();
99
}
100
else
101
{
102
//累加拼音声母
103
tempStr += GetPYChar(c.ToString());
104
}
105
}
106
107
return tempStr;
108
}
109
110
/// <summary>
111
/// 取单个字符的拼音字母
112
/// </summary>
113
/// <param name="c">汉字</param>
114
/// <returns>返回拼音字母</returns>
115
public string GetPYChar(string c)
116
{
117
byte[] byteArray = new byte[2];
118
byteArray = Encoding.Default.GetBytes(c);
119
int i = (short)(byteArray[0] - '\0') * 256 + (short)(byteArray[1] - '\0');
120
121
if (i < 0xB0A1) return "*";
122
if (i < 0xB0C5) return "a";
123
if (i < 0xB2C1) return "b";
124
if (i < 0xB4EE) return "c";
125
if (i < 0xB6EA) return "d";
126
if (i < 0xB7A2) return "e";
127
if (i < 0xB8C1) return "f";
128
if (i < 0xB9FE) return "g";
129
if (i < 0xBBF7) return "h";
130
if (i < 0xBFA6) return "j";
131
if (i < 0xC0AC) return "k";
132
if (i < 0xC2E8) return "l";
133
if (i < 0xC4C3) return "m";
134
if (i < 0xC5B6) return "n";
135
if (i < 0xC5BE) return "o";
136
if (i < 0xC6DA) return "p";
137
if (i < 0xC8BB) return "q";
138
if (i < 0xC8F6) return "r";
139
if (i < 0xCBFA) return "s";
140
if (i < 0xCDDA) return "t";
141
if (i < 0xCEF4) return "w";
142
if (i < 0xD1B9) return "x";
143
if (i < 0xD4D1) return "y";
144
if (i < 0xD7FA) return "z";
145
146
return "*";
147
}
148
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148
