#region ### 得到首字母 方案3
//要转换的汉字字符串 返回:拼音缩写
public static string GetPYFirstChar(string str)
{
string pyStr = "";
foreach (char c in str)
{
if ((int)c >= 32 && (int)c <= 126) pyStr += c; //字母和符号原样保留
else if ((int)c > 126) pyStr += GetGbkChar(c.ToString()); //累加拼音声母
}
return pyStr;
}
/// <summary>
/// 获取首拼音
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private static string GetGbkChar(string str)
{
if (str.CompareTo("吖") >= 0 && (str.CompareTo("鏊") <= 0)) return "A";
else if (str.CompareTo("八") >= 0 && (str.CompareTo("簿") <= 0)) return "B";
else if (str.CompareTo("嚓") >= 0 && (str.CompareTo("错") <= 0)) return "C";
else if (str.CompareTo("哒") >= 0 && (str.CompareTo("跺") <= 0)) return "D";
else if (str.CompareTo("屙") >= 0 && (str.CompareTo("贰") <= 0)) return "E";
else if (str.CompareTo("发") >= 0 && (str.CompareTo("馥") <= 0)) return "F";
else if (str.CompareTo("旮") >= 0 && (str.CompareTo("过") <= 0)) return "G";
else if (str.CompareTo("铪") >= 0 && (str.CompareTo("蠖") <= 0)) return "H";
else if (str.CompareTo("丌") >= 0 && (str.CompareTo("竣") <= 0)) return "J";
else if (str.CompareTo("咔") >= 0 && (str.CompareTo("廓") <= 0)) return "K";
else if (str.CompareTo("垃") >= 0 && (str.CompareTo("雒") <= 0)) return "L";
else if (str.CompareTo("妈") >= 0 && (str.CompareTo("穆") <= 0)) return "M";
else if (str.CompareTo("拿") >= 0 && (str.CompareTo("糯") <= 0)) return "N";
else if (str.CompareTo("噢") >= 0 && (str.CompareTo("沤") <= 0)) return "O";
else if (str.CompareTo("趴") >= 0 && (str.CompareTo("曝") <= 0)) return "P";
else if (str.CompareTo("七") >= 0 && (str.CompareTo("群") <= 0)) return "Q";
else if (str.CompareTo("蚺") >= 0 && (str.CompareTo("箬") <= 0)) return "R";
else if (str.CompareTo("仨") >= 0 && (str.CompareTo("锁") <= 0)) return "S";
else if (str.CompareTo("他") >= 0 && (str.CompareTo("箨") <= 0)) return "T";
else if (str.CompareTo("哇") >= 0 && (str.CompareTo("鋈") <= 0)) return "W";
else if (str.CompareTo("夕") >= 0 && (str.CompareTo("蕈") <= 0)) return "X";
else if (str.CompareTo("丫") >= 0 && (str.CompareTo("蕴") <= 0)) return "Y";
else if (str.CompareTo("匝") >= 0 && (str.CompareTo("做") <= 0)) return "Z";
//return str;
return GetPYChar(str[0]);
}
#endregion
使用方法:
string ss = MyPinYin2.GetPYFirstChar("沱潼蜻蜓麒麟圳"); // TTQTQLZ
string ss2 = MyPinYin2.GetPYFirstChar("蜻麒 生活的七色板 我a*%爱你中国沱牌曲酒 南方小康指数ETF"); // QQ SHDQSB Ua*%ANZGTPQJ NFXKZSETF
说明:如果仅使用方案3,针对 “草擦曹”等字还是找不出声母; 所以 先使用方案3,如果还是找不出声母时,再使用 方案1中的private static string GetPYChar(char c) 方法 (http://blog.csdn.net/keenweiwei/article/details/8894576). 这样会比较好。