1 static void Main(string[] args) 2 { 3 string s = GetChineseSpell("周杰伦"); 4 Console.WriteLine(s.ToLower()); 5 Console.ReadKey(); 6 } 7 static public string GetChineseSpell(string strText) 8 { 9 int len = strText.Length; 10 string myStr = ""; 11 for (int i = 0; i < len; i++) 12 { 13 myStr += getSpell(strText.Substring(i, 1)); 14 } 15 return myStr; 16 } 17 18 static public string getSpell(string cnChar) 19 { 20 byte[] arrCN = Encoding.Default.GetBytes(cnChar); 21 if (arrCN.Length > 1) 22 { 23 int area = (short)arrCN[0]; 24 int pos = (short)arrCN[1]; 25 int code = (area << 8) + pos; 26 int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 27 }; 28 for (int i = 0; i < 26; i++) 29 { 30 int max = 55290; 31 if (i != 25) max = areacode[i + 1]; 32 if (areacode[i] <= code && code < max) 33 { 34 return Encoding.Default.GetString(new byte[] { (byte)(65 + i) }); 35 } 36 } 37 return "*"; 38 } 39 else return cnChar; 40 }
控制台运行结果为: