把汉字转换成拼音(全拼) - 挖沙啦代码库【1】
今天开始慢慢的吧挖沙啦的开发经验给大家分享,哈哈,很高兴的向大家推荐了。如有不才的地方,还请大家多多指点
把汉字转换成拼音(全拼) - 挖沙啦代码库【1】
比如说以下标题,使用的就是URL中文转拼音的技术,很简单,给大家一点点的讲解
中俄商讨新战机合同 欲重启加油机项目
http://www.washala.com/Info_23409_ZhongEShangTaoXinZhanJiHeTong-YuZhongQiJiaYouJiXiangMu.html
其中 汉字部分转成拼音为 : ZhongEShangTaoXinZhanJiHeTong-YuZhongQiJiaYouJiXiangMu
中间的空格,或者很怪异的符号,我们统一转换成 - 横杠
首先定义拼音的枚举方式
这里是将中文匹配成拼音的方法
/// <summary>
/// 把汉字转换成拼音(全拼)
/// </summary>
/// <param name="hzString">汉字字符串</param>
/// <param name="IsFiltrate">是否过滤多余的</param>
/// <returns>转换后的拼音(全拼)字符串</returns>
public static string Convert(string hzString, bool IsFiltrate)
{
// 匹配中文字符
Regex regex = new Regex("^[\u4e00-\u9fa5]$");
byte[] array = new byte[2];
StringBuilder pyString = new StringBuilder();
int chrAsc = 0;
int i1 = 0;
int i2 = 0;
char[] noWChar = hzString.ToCharArray();
for (int j = 0; j < noWChar.Length; j++)
{
// 中文字符
if (regex.IsMatch(noWChar[j].ToString()))
{
array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());
i1 = (short)(array[0]);
i2 = (short)(array[1]);
chrAsc = i1 * 256 + i2 - 65536;
if (chrAsc > 0 && chrAsc < 160)
{
pyString.Append( noWChar[j] );
}
else
{
// 修正部分文字
if (chrAsc == -9254) // 修正“圳”字
pyString.Append( "Zhen");
else
{
for (int i = (pyValue.Length - 1); i >= 0; i--)
{
if (pyValue[i] <= chrAsc)
{
pyString.Append( pyName[i]);
break;
}
}
}
}
}
// 非中文字符
else
{
if (IsFiltrate == true)
{
//过滤掉非英文非数字的字符
Regex filtrateRegex = new Regex("^[A-Za-z0-9]+$");
if (filtrateRegex.IsMatch(noWChar[j].ToString()))
{
pyString.Append(noWChar[j].ToString());
}
else
{
pyString.Append("-");
}
}
else
{
pyString.Append(noWChar[j].ToString());
}
}
}
return pyString.ToString();
}
这里可以做个比较简单的方法来调用
#region "将汉字转换拼音,去除掉特殊字符"
/// <summary>
/// 将汉字转换拼音,去除掉特殊字符
/// </summary>
/// <param name="HzString">要转换的字符串</param>
/// <returns>拼音</returns>
public static string ToPinyin(string HzString)
{
return Pinyin.Convert(HzString,true);
}
/// <summary>
/// 将汉字转换拼音,去除掉特殊字符
/// </summary>
/// <param name="HzString">要转换的字符串</param>
/// <param name="FontLength">要输出的字符长度</param>
/// <returns>拼音</returns>
public static string ToPinyin(string HzString,int FontLength)
{
if (HzString.Length > FontLength)
{
return Pinyin.Convert(HzString.Substring(0, FontLength - 1), true);
}
else
{
return Pinyin.Convert(HzString, true);
}
}
#endregion
写得比较简单,后台编辑器在数据多的时候 IE8就很卡。没办法给大家写太多的东西,下次我会用别的浏览器打开后台写的
附上源码,请笑纳,改改就能用了,呵呵
Code DownLoad:https://files.cnblogs.com/sxally/中文转拼音.rar