Obtener la abreviatura de la primera letra pinyin de una cadena de caracteres chinos
Autor:Eve Cole
Fecha de actualización:2009-07-01 16:08:11
Puede que el título no quede claro, pero las funciones implementadas son las siguientes: I Love China-WAZG
1. La diferencia entre caracteres chinos y letras inglesas.
La tabla asc estándar no contiene caracteres chinos, porque un carácter asc solo tiene 1 byte, que es de 8 bits. Si está firmado, debe ser -128-127. sin firmar, debería ser 0-255. Y sabemos que un carácter chino debe ocupar 2 bytes, y el rango de representación debe ser -32768-32767, entonces el asc de caracteres chinos, por ejemplo, un poco: 11002111,11111101, el carácter que representa debe exceder el rango que asc puede expresar, entonces se producirá un desbordamiento. Por tanto, el código asc de un carácter chino que ocupa dos bytes debe ser negativo.
2.Implementación de funciones
1usando el sistema;
2usando System.Collections.Generic;
3usando System.Text;
4
5espacio de nombres Aplicación de consola1
6{
7 programas de clase
8 {
9 vacío estático Principal (cadena [] args)
10 {
11 Console.WriteLine(GetChineseFirstChar("Te amo un*% China");;
12}
13 cadena estática GetChineseFirstChar (cadena chinaStr)
14 {
15 StringBuilder sb = nuevo StringBuilder();
16 int longitud = longitud de cadena china;
17 para (int i = 0; i < longitud; i++)
18 {
19 caracteres chinoChar = chinoStr[i];
20 sb.Append(GetpyChar(chineseChar));
veintiuno }
22 retorno sb.ToString();
veintitrés }
24 cadenas estáticas GetpyChar (char c)
25 {
26 int código asc = Microsoft.VisualBasic.Strings.Asc(c);
27 int temp = 65536 + código asc;
28 si (temperatura >= 45217 && temperatura <= 45252)
29 {
30 retorno "A";
31}
32 más si (temperatura >= 45253 && temperatura <= 45760)
33 {
34 devuelve "B";
35}
36 más si (temperatura >= 45761 && temperatura <= 46317)
37 {
38 devuelve "C";
39 }
40 más si (temperatura >= 46318 && temperatura <= 46825)
41 {
42 devolver "D";
43}
44
45
46 más si (temperatura >= 46826 && temperatura <= 47009)
47 {
48 devuelve "E";
49 }
50 más si (temperatura >= 47010 && temperatura <= 47296)
51 {
52 devolver "F";
53}
54 más si (temperatura >= 47297 && temperatura <= 47613)
55 {
56 devuelven "G";
57 }
58 más si (temperatura >= 47614 && temperatura <= 48118)
59 {
60 retorno "H";
61 }
62 más si (temperatura >= 48119 && temperatura <= 49061)
63 {
64 devolver "J";
65 }
66 más si (temperatura >= 49062 && temperatura <= 49323)
67 {
68 devuelve "K";
69 }
70 más si (temperatura >= 49324 && temperatura <= 49895)
71 {
72 retorno "L";
73}
74 más si (temperatura >= 49896 && temperatura <= 50370)
75 {
76 devuelve "M";
77 }
78 más si (temperatura >= 50371 && temperatura <= 50613)
79 {
80 devuelve "N";
81 }
82 más si (temperatura >= 50614 && temperatura <= 50621)
83 {
84 devolver "O";
85}
86 más si (temperatura >= 50622 && temperatura <= 50905)
87 {
88 devuelve "P";
89 }
90 más si (temperatura >= 50906 && temperatura <= 51386)
91 {
92 devuelve "Q";
93}
94 más si (temperatura >= 51387 && temperatura <= 51445)
95 {
96 devuelve "R";
97 }
98 más si (temperatura >= 51446 && temperatura <= 52217)
99 {
100 retorno "S";
101 }
102 más si (temperatura >= 52218 && temperatura <= 52697)
103 {
104 devolver "T";
105 }
106 más si (temperatura >= 52698 && temperatura <= 52979)
107 {
108 devuelve "W";
109 }
110 más si (temperatura >= 52980 && temperatura <= 53688)
111 {
112 devuelve "X";
113 }
114 más si (temperatura >= 53689 && temperatura <= 54480)
115 {
116 devuelve "Y";
117 }
118 más si (temperatura >= 54481 && temperatura <= 62289)
119 {
120 retorno "Z";
121 }
122 más
123 {
124 retorno c.ToString();
125 }
126 }
127 }
128}
129
http://www.cnblogs.com/jillzhang/archive/2006/10/30/544596.html