c#汉字转拼音(GBK,GB2312)
参考 http://hi.baidu.com/ggukknvsdcbbgxq/item/0ef8ea9d82479b49f142155b
using System.Text.RegularExpressions;
//利用正则表达式验证汉字和英文,阿拉伯数字
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("^[\u4e00-\u9fa5]+$ || ^[a-zA-Z0-9]+$"); //验证汉字和英文,阿拉伯数字
if (reg.Match(textBox5.Text.ToString()).Success)
{
//遍历ArrayList中的所有信息
foreach (object o in m_list)
{
//获得各汉字拼音首字母缩写,及阿拉伯数字,GetSpell是自己写的函数
string strRoadName = GetSpell(o.ToString()).ToLower();
string strtxtRoadName = textBox5.Text.ToLower();
//根据拼音进行匹配(利用Contain和Substring函数进行判定)
if ( strtxtRoadName.Substring(0, strtxtRoadName.Length) == strtxtRoadName)
{
listBox2.Items.Add(o);
}
}
}
else
{
//当TextBox为空时显示所有数据
return;
}
public static string GetSpell(string strText) //自已写的函数
{
string myStr = string.Empty;
for (int i = 0; i < strText.Length; i++)
{
//代码效率高的,缺点就是只支持GB2312,不支持GBK(有很多偏僻的字读不出来)
myStr += GetFirstSpell(strText.Substring(i, 1));
//代码效率低,但支持GBK
myStr += GetGbkX(strText.Substring(i, 1));
}
return myStr;
}
private static string GetFirstSpell(string cnChar) //自己写的函数,下面的代码是效率高的,缺点就是只支持GB2312,不支持GBK(有很多偏僻的字读不出来)
{
//byte[] arrCn = Encoding.Default.GetBytes(cnChar);
byte[] arrCn = Encoding.Default.GetBytes(cnChar);
if (arrCn.Length > 1)
{
int area = (short)arrCn[0];
int pos = (short)arrCn[1];
int code = (area << 8) + pos;
int[] bmcode =
{
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
};
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25)
max = bmcode[i + 1];
if (bmcode[i] <= code && code < max)
return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
return "*";
}
return cnChar;
}
//下面这个支持GBK,但是效率不是很高
private static string GetGbkX(string str)
{
if (str.CompareTo("吖") < 0) return str;
if (str.CompareTo("八") < 0) return "A";
if (str.CompareTo("嚓") < 0) return "B";
if (str.CompareTo("咑") < 0) return "C";
if (str.CompareTo("妸") < 0) return "D";
if (str.CompareTo("发") < 0) return "E";
if (str.CompareTo("旮") < 0) return "F";
if (str.CompareTo("铪") < 0) return "G";
if (str.CompareTo("讥") < 0) return "H";
if (str.CompareTo("咔") < 0) return "J";
if (str.CompareTo("垃") < 0) return "K";
if (str.CompareTo("嘸") < 0) return "L";
if (str.CompareTo("拏") < 0) return "M";
if (str.CompareTo("噢") < 0) return "N";
if (str.CompareTo("妑") < 0) return "O";
if (str.CompareTo("七") < 0) return "P";
if (str.CompareTo("亽") < 0) return "Q";
if (str.CompareTo("仨") < 0) return "R";
if (str.CompareTo("他") < 0) return "S";
if (str.CompareTo("哇") < 0) return "T";
if (str.CompareTo("夕") < 0) return "W";
if (str.CompareTo("丫") < 0) return "X";
if (str.CompareTo("帀") < 0) return "Y";
if (str.CompareTo("咗") < 0) return "Z";
return str;
}
//table of the constant list(以下是拼音的代表号)
// 'A'; //45217..45252
// 'B'; //45253..45760
// 'C'; //45761..46317
// 'D'; //46318..46825
// 'E'; //46826..47009
// 'F'; //47010..47296
// 'G'; //47297..47613
// 'H'; //47614..48118
// 'J'; //48119..49061
// 'K'; //49062..49323
// 'L'; //49324..49895
// 'M'; //49896..50370
// 'N'; //50371..50613
// 'O'; //50614..50621
// 'P'; //50622..50905
// 'Q'; //50906..51386
// 'R'; //51387..51445
// 'S'; //51446..52217
// 'T'; //52218..52697
//没有U,V
// 'W'; //52698..52979
// 'X'; //52980..53640
// 'Y'; //53689..54480
// 'Z'; //54481..55289
c#汉字转拼音(GBK,GB2312)相关推荐
- PHP 汉字转拼音 gbk utf8
经测试,没问题. ---------------- 乐于分享,长期招PHP学弟,带你装逼带你飞....QQ 1806522711
- 字符在utf-8,gbk,gb2312,iso8859-1下的编码实验
一直以来对编码并不是太理解,所以用java做了个实验,感觉清楚了点: 下面这个代码的功能是,获取某个字符或汉字在utf-8,gbk,gb2312,iso8859-1等下的十六进制,八进制,十进制,二进 ...
- Java中获取GBK编码汉字的拼音首字母(包括生僻字)
Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...
- php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音
在php开发中有把汉字转换为拼音的需求 这里主要说明Ascii和gbk 格式的汉字转为拼音的内容,如果你是utf-8的,那就通过iconv()函数转utf-8为gbk,在进行拼音转换//Ascii转拼 ...
- php 基于gbk和 Ascii把汉字转换为拼音
在php开发中有把汉字转换为拼音的需求 这里主要说明Ascii和gbk 格式的汉字转为拼音的内容,如果你是utf-8的,那就通过iconv()函数转utf-8为gbk,在进行拼音转换 //Ascii转 ...
- 汉字转拼音c/c++源码,支持gb2312和utf8
最近在写一个拼音转换程序,将汉字转化成拼音.网上很多转化程序只支持gb2312编码,却不支持utf8.于是根据网上的源码整合成了一个既支持gb2312编码.又支持utf8编码的拼音转换程序.他们都支持 ...
- php 汉字转拼音及获取拼音首字母
1. 获取拼音(接受中英文混合): // $_Code is utf8 or gb2312 function pinyin($_String, $pix = '', $_Code='utf8') {$ ...
- 汉字转拼音(完全模式)
using System; using System.Collections.Generic; using System.Text; namespace AIMSCommon { public ...
- php 生僻字 拼音,PHP汉字转拼音(支持生僻字)
namespace common\expand; /** * 基于PHP语言的汉语转拼音的类 * 兼容 UTF8.GBK.GB2312 编码,无须特殊处理 * 对中文默认返回拼音首字母缩写,其它字符不 ...
最新文章
- 浅谈同一家公司多个系统,共用登录用户名和密码
- IOTA 交易,确认和共识
- 【深度学习】你有哪些深度学习(RNN、CNN)调参的经验?
- [渝粤教育] 广东-国家-开放大学 21秋期末考试工程经济10202k2
- 微服务化后缓存怎么做?
- Linux zookeeper下载、单点部署
- patran如何看屈曲因子_校准证书中的修正值、修正因子,你真的会用吗?
- line-hieght与vertical-align的区别与联系
- Unable to resolve target 'android-7'
- erp生产管理系统流程_仁和ERP生产制造业ERP管理系统库存管理
- Why String is Immutable or Final in Java
- Asp.net上传文件至目录
- 实验五 编写、调试具有多个段的程序
- CS144 Lab1:StreamReAssemer
- Vue Markdown编辑器
- outlook配置文件添加服务器,Microsoft Outlook卡在加载配置文件?这里如何解决它
- html视频播放卡顿,电脑网页看视频卡?来看看我的解决方法!
- 【BackEnd】SpringBoot整合MybatisPlus实现登录注册功能(适合初学者)
- 【前端必知】胶水(框架) Stencil.js
- 聊聊目标检测中的多尺度检测(Multi-Scale),从YOLO,ssd到FPN,SNIPER,SSD填坑贴和极大极小目标识别