参考 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)相关推荐

  1. PHP 汉字转拼音 gbk utf8

    经测试,没问题. ---------------- 乐于分享,长期招PHP学弟,带你装逼带你飞....QQ 1806522711

  2. 字符在utf-8,gbk,gb2312,iso8859-1下的编码实验

    一直以来对编码并不是太理解,所以用java做了个实验,感觉清楚了点: 下面这个代码的功能是,获取某个字符或汉字在utf-8,gbk,gb2312,iso8859-1等下的十六进制,八进制,十进制,二进 ...

  3. Java中获取GBK编码汉字的拼音首字母(包括生僻字)

    Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...

  4. php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音

    在php开发中有把汉字转换为拼音的需求 这里主要说明Ascii和gbk 格式的汉字转为拼音的内容,如果你是utf-8的,那就通过iconv()函数转utf-8为gbk,在进行拼音转换//Ascii转拼 ...

  5. php 基于gbk和 Ascii把汉字转换为拼音

    在php开发中有把汉字转换为拼音的需求 这里主要说明Ascii和gbk 格式的汉字转为拼音的内容,如果你是utf-8的,那就通过iconv()函数转utf-8为gbk,在进行拼音转换 //Ascii转 ...

  6. 汉字转拼音c/c++源码,支持gb2312和utf8

    最近在写一个拼音转换程序,将汉字转化成拼音.网上很多转化程序只支持gb2312编码,却不支持utf8.于是根据网上的源码整合成了一个既支持gb2312编码.又支持utf8编码的拼音转换程序.他们都支持 ...

  7. php 汉字转拼音及获取拼音首字母

    1. 获取拼音(接受中英文混合): // $_Code is utf8 or gb2312 function pinyin($_String, $pix = '', $_Code='utf8') {$ ...

  8. 汉字转拼音(完全模式)

    using System; using System.Collections.Generic; using System.Text; namespace AIMSCommon {     public ...

  9. php 生僻字 拼音,PHP汉字转拼音(支持生僻字)

    namespace common\expand; /** * 基于PHP语言的汉语转拼音的类 * 兼容 UTF8.GBK.GB2312 编码,无须特殊处理 * 对中文默认返回拼音首字母缩写,其它字符不 ...

最新文章

  1. 浅谈同一家公司多个系统,共用登录用户名和密码
  2. IOTA 交易,确认和共识
  3. 【深度学习】你有哪些深度学习(RNN、CNN)调参的经验?
  4. [渝粤教育] 广东-国家-开放大学 21秋期末考试工程经济10202k2
  5. 微服务化后缓存怎么做?
  6. Linux zookeeper下载、单点部署
  7. patran如何看屈曲因子_校准证书中的修正值、修正因子,你真的会用吗?
  8. line-hieght与vertical-align的区别与联系
  9. Unable to resolve target 'android-7'
  10. erp生产管理系统流程_仁和ERP生产制造业ERP管理系统库存管理
  11. Why String is Immutable or Final in Java
  12. Asp.net上传文件至目录
  13. 实验五 编写、调试具有多个段的程序
  14. CS144 Lab1:StreamReAssemer
  15. Vue Markdown编辑器
  16. outlook配置文件添加服务器,Microsoft Outlook卡在加载配置文件?这里如何解决它
  17. html视频播放卡顿,电脑网页看视频卡?来看看我的解决方法!
  18. 【BackEnd】SpringBoot整合MybatisPlus实现登录注册功能(适合初学者)
  19. 【前端必知】胶水(框架) Stencil.js
  20. 聊聊目标检测中的多尺度检测(Multi-Scale),从YOLO,ssd到FPN,SNIPER,SSD填坑贴和极大极小目标识别

热门文章

  1. 如何读懂EDIFACT报文
  2. centos7默认mariadb与mysql官网下载安装问题解决
  3. 什么是联想能力?如何提高联想能力?
  4. 高精度加法(C++,高精度)
  5. 第44件事 用户运营的5个关键环节
  6. Qt学习之安装过程中各种问题的解决
  7. 分治法解决最近点对问题
  8. 1、查询姓名中包含‘u’字母的员工记录2、同名去重3、字段计算
  9. Android获取百度音乐下载音乐和歌词下载链接
  10. 初学者应该如何学习法语呢?