Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。
于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个硬枚举的中文转拼音的类。
原理是这样的:
1
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
|
public class PinYinUtils { private static readonly Dictionary< string , string > PinYinDict = new Dictionary< string , string > { { "猿" , "YUAN" } // 等............ }; /// <summary> /// Return to the first letter /// </summary> /// <param name="word">Chinese word</param> /// <example> /// GetFirstPinyinChar("张三") /// will return "Z" /// Can be used for address book index and so on /// </example> /// <returns></returns> public static string GetFirstPinyinChar( string word) { if (word.Length == 0) return "#" ; var firstLetter = word[0].ToString(); if (PinYinDict.ContainsKey(firstLetter)) { return PinYinDict[firstLetter]; } return firstLetter; } /// <summary> /// return the chinese char's pinyin /// </summary> /// <param name="chineseChar"></param> /// <example> /// GetPinYin('福') /// will return "FU" /// </example> /// <returns></returns> public static string GetPinYin( char chineseChar) { var str = chineseChar.ToString(); if (PinYinDict.ContainsKey(str)) { return PinYinDict[str]; } return null ; } /// <summary> /// Get the phonetic abbreviation for Chinese char /// </summary> /// <param name="chineseChar"></param> /// <example> /// GetShortPinYin('福') /// will return "F" /// </example> /// <returns></returns> public static string GetShortPinYin( char chineseChar) { var str = chineseChar.ToString(); if (PinYinDict.ContainsKey(str)) { var first = PinYinDict[str].FirstOrDefault(); if (first == 0) return null ; return first.ToString(); } return null ; } } |
源码:
https://github.com/chsword/PinYinUtil/blob/master/PinYinUtils.cs
GITHUB:https://github.com/chsword/PinYinUtil
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/chsword/p/xamarin_chinese_to_pinyin.html