Obtenez l'abréviation de la première lettre pinyin d'une chaîne de caractères chinois
Auteur:Eve Cole
Date de mise à jour:2009-07-01 16:08:11
Le titre n'est peut-être pas clair, mais les fonctions mises en œuvre sont les suivantes : I Love China-WAZG
1. La différence entre les caractères chinois et les lettres anglaises
La table asc standard ne contient pas de caractères chinois, car un caractère asc n'a qu'un seul octet, soit 8 bits. La plage de nombres que 8 bits peuvent représenter s'il est signé, il devrait être -128-127. non signé, il devrait être compris entre 0 et 255. Et nous savons qu'un caractère chinois doit occuper 2 octets, et la plage de représentation doit être -32768-32767, donc l'asc des caractères chinois, par exemple, un peu : 11002111,11111101, le caractère qu'il représente doit dépasser la plage asc peut exprimer, alors un débordement se produira. Par conséquent, le code asc d’un caractère chinois occupant deux octets doit être négatif.
2. Implémentation des fonctions
1en utilisant le système ;
2en utilisant System.Collections.Generic ;
3en utilisant System.Text ;
4
5Application de console d'espace de noms1
6{
7 programmes de cours
8 {
9 static void Main(string[] arguments)
10 {
11 Console.WriteLine(GetChineseFirstChar("Je t'aime *% Chine"));;
12}
13 chaîne statique GetChineseFirstChar(string ChineseStr)
14 {
15 StringBuilder sb = new StringBuilder();
16 int longueur = chinoisStr.Length;
17 pour (int i = 0; i < longueur; i++)
18 {
19 caractères ChineseChar = ChineseStr[i];
20 sb.Append(GetpyChar(chineseChar));
vingt-et-un }
22 return sb.ToString();
vingt-trois }
24 chaînes statiques GetpyChar(char c)
25 {
26 int ascCode = Microsoft.VisualBasic.Strings.Asc(c);
27 int temp = 65536 + ascCode ;
28 si (temp >= 45217 && temp <= 45252)
29 {
30 renvoie "A" ;
31}
32 sinon si (temp >= 45253 && temp <= 45760)
33 {
34 renvoie "B" ;
35}
36 sinon si (temp >= 45761 && temp <= 46317)
37 {
38 renvoie "C" ;
39 }
40 sinon si (temp >= 46318 && temp <= 46825)
41 {
42 renvoie "D" ;
43}
44
45
46 sinon si (temp >= 46826 && temp <= 47009)
47 {
48 renvoie "E" ;
49 }
50 sinon si (temp >= 47010 && temp <= 47296)
51 {
52 renvoie "F" ;
53}
54 sinon si (temp >= 47297 && temp <= 47613)
55 {
56 renvoie "G" ;
57 }
58 sinon si (temp >= 47614 && temp <= 48118)
59 {
60 renvoie "H" ;
61 }
62 sinon si (temp >= 48119 && temp <= 49061)
63 {
64 renvoie "J" ;
65 }
66 sinon si (temp >= 49062 && temp <= 49323)
67 {
68 renvoie "K" ;
69 }
70 sinon si (temp >= 49324 && temp <= 49895)
71 {
72 renvoie "L" ;
73}
74 sinon si (temp >= 49896 && temp <= 50370)
75 {
76 renvoie "M" ;
77 }
78 sinon si (temp >= 50371 && temp <= 50613)
79 {
80 renvoie "N" ;
81 }
82 sinon si (temp >= 50614 && temp <= 50621)
83 {
84 renvoie "O" ;
85}
86 sinon si (temp >= 50622 && temp <= 50905)
87 {
88 renvoie "P" ;
89 }
90 sinon si (temp >= 50906 && temp <= 51386)
91 {
92 renvoie "Q" ;
93}
94 sinon si (temp >= 51387 && temp <= 51445)
95 {
96 renvoie "R" ;
97 }
98 sinon si (temp >= 51446 && temp <= 52217)
99 {
100 renvoie « S » ;
101 }
102 sinon si (temp >= 52218 && temp <= 52697)
103 {
104 renvoie "T" ;
105 }
106 sinon si (temp >= 52698 && temp <= 52979)
107 {
108 renvoie "W" ;
109 }
110 sinon si (temp >= 52980 && temp <= 53688)
111 {
112 renvoie "X" ;
113 }
114 sinon si (temp >= 53689 && temp <= 54480)
115 {
116 renvoie "Y" ;
117 }
118 sinon si (temp >= 54481 && temp <= 62289)
119 {
120 renvoie "Z" ;
121 }
122 autres
123 {
124 return c.ToString();
125 }
126 }
127 }
128}
129
http://www.cnblogs.com/jillzhang/archive/2006/10/30/544596.html