最近在做一个网站的搜索功能,其中有一个功能模块是,当用户输入的汉字是错误的也能识别出来其相似的结果,拿到这个功能后思考之后,决定使用微软的拼音转换组件:Simplified Chinese Pin-Yin Conversion Library 可以把想要搜索的字段换成拼音进行存储
这个类库并不太难,而且微软提供了开发文档:相信一看就会:
代码如下:
////// 获取指定字符串中的单个字符的(不包括多音字)拼音 /// /// ///public static string GetStrPY(string str) { StringBuilder sb = new StringBuilder(); foreach (char obj in str) { try { ChineseChar chineseChar = new ChineseChar(obj); if (ChineseChar.IsValidChar(obj)) { string t = chineseChar.Pinyins[0].ToString().ToLower(); sb.Append(t.Substring(0, t.Length - 1)); } else { sb.Append(obj); } } catch { sb.Append(obj.ToString()); } } return sb.ToString(); } /// /// 获取指定 /// /// ///public static string GetStrPYs(string str) { StringBuilder sb = new StringBuilder(); string old=string.Empty; foreach (char obj in str) { try { ChineseChar chineseChar = new ChineseChar(obj); for (int i = 0; i < chineseChar.PinyinCount; i++) { string t = chineseChar.Pinyins[i].ToString().ToLower().Substring(0, chineseChar.Pinyins[i].ToString().Length - 1); if ((string.IsNullOrEmpty(old)) || (!old.Equals(t))) { old = t; sb.Append(t); } } } catch { sb.Append(obj.ToString()); } } return sb.ToString(); } /// /// 获取制定字符串的拼音首字母 /// /// ///public static string GetFirstPinyin(string str) { StringBuilder sb = new StringBuilder(); foreach (char obj in str) { try { ChineseChar chineseChar = new ChineseChar(obj); string t = chineseChar.Pinyins[0].ToString(); sb.Append( t.Substring(0, 1)); } catch { sb.Append( obj.ToString()); } } return sb.ToString(); }