首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
input+select输入汉字或拼音快速选择数据第2步(后附生成字符串拼音、取汉字首字母的方法)
所属栏目:ASP.NET(webform)  时间:2010-11-26 14:26  作者:狼子

第1步:http://www.nnllok.cn/Read.aspx?id=466

第2步:http://www.nnllok.cn/Read.aspx?id=467

again:http://www.nnllok.cn/Read.aspx?id=468

第3步:http://www.nnllok.cn/Read.aspx?id=469

第4步:http://www.nnllok.cn/Read.aspx?id=470

------------------------------------------------------

修正了第1步里的很多问题,像回车提交和点按钮提交之间有冲突,像文本框的下拉提示没有设置AutoCompleteType属性,像加入了返回select控件value值的hidden,做到可以输入中文或者拼音,都可以取到正确的值

现在记录这第2步,我卡在这里了,我想要一个页面,可以有两个这样的文本框,他们选择的数据是相同的

选择的数据相同,我要做的是什么呢?我在想。。。我在想。。。

我最后是要做成一个asp.net的用户控件的,最后需要Text、Value两个属性,Text返回球队名称,Value返回球队编号,用在FormView里,绑定数据的是Value属性

这个用户控件,我在一个页面里,要放两个,一个是Home Team,一个是Away Team,我要做到,我的控件,调用的js脚本,只调用一个,写入的全局变量,只写入一个,读取的数据,只读取一次

先记录现在这个第2步,已经加入拼音的控件了,已经连接到数据库了,已经从数组读取数据了,同样是在ie8内核maxthon 2.5.15、chrome 7.0.517.43下测试通过

Phonics.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Phonics.aspx.cs" Inherits="Test_Phonics" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body id="myBody">
    <form id="form1" runat="server">
    <div>
        字符串:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="把字符串中的汉字转为拼音" OnClick="Button1_Click" />
    </div>
   
    <div style="padding-top:32px;">
        <asp:TextBox ID="TbWord" runat="server" AutoCompleteType="Disabled"></asp:TextBox>
        <div id="wordSelectDiv" style="z-index:99; position:absolute; display:none;">
            <select id="wordSelect" style="width:120px; height:0px;" multiple="multiple"></select>
        </div>
        <asp:HiddenField ID="HfWord" runat="server" Value="0" />
        <asp:Button ID="Button2" runat="server" Text="获取选中的值" OnClick="Button2_Click" />
       
        <script type="text/javascript">
            var wordInputObjName = "<% =TbWord.ClientID %>";
            var wordValueObjName = "<% =HfWord.ClientID %>";
       
            //select text
            var wordArray = new Array (<asp:Literal ID="LtWord" runat="server"></asp:Literal>);
           
            //select value
            var wordIdArray = [<asp:Literal ID="LtId" runat="server"></asp:Literal>];
       
            //select text phonics
            var phonicsArray = new Array (<asp:Literal ID="LtPhonics" runat="server"></asp:Literal>);
       
            //num
            var arrayLength = <asp:Literal ID="LtNum" runat="server"></asp:Literal>;
        </script>
        <script type="text/javascript" src="phonics.js"></script>
    </div>
    </form>
</body>
</html>

Phonics.aspx.cs

using System;
using System.Text;
using System.Data;

public partial class Test_Phonics : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IniPhonicsArray();
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("<br>" + NnllClass.GetPhonics(TextBox1.Text));
    }

    #region 读取拼音数据,写入客户端脚本的数组中
    private void IniPhonicsArray()
    {
        using (DataTable dt = DataClass.ExecuteSelectCommand("select PID, Word, Phonics from Test_Phonics order by Phonics"))
        {
            if (dt == null) return;

            StringBuilder sbPid = new StringBuilder("");
            StringBuilder sbWord = new StringBuilder("\"");
            StringBuilder sbPhonics = new StringBuilder("\"");

            int num = dt.Rows.Count;
            LtNum.Text = num.ToString();

            //添加第1行到倒数第二行,因为最后一行添加的后缀不同,所以另外添加
            if (num > 0)
            {
                num--;
                for (int index = 0; index < num; index++)
                {
                    sbPid.Append(dt.Rows[index]["PID"].ToString() + ",");
                    sbWord.Append(dt.Rows[index]["Word"].ToString() + "\", \"");
                    sbPhonics.Append(dt.Rows[index]["Phonics"].ToString() + "\", \"");
                }

                //加入最后一行
                sbPid.Append(dt.Rows[num]["PID"].ToString());
                sbWord.Append(dt.Rows[num]["Word"].ToString() + "\"");
                sbPhonics.Append(dt.Rows[num]["Phonics"].ToString() + "\"");
            }

            //记录数组
            LtId.Text = sbPid.ToString();
            LtWord.Text = sbWord.ToString();
            LtPhonics.Text = sbPhonics.ToString();
        }
    }
    #endregion

    protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Write("<br>" + HfWord.Value + "," + TbWord.Text);
    }
}

phonics.js

//定义全局变量,记录整个页面当前有焦点的可录入控件的id,这个值用于隐藏select时的判断
var activeObjId = "", lastActiveObjId = "";

var wordCount = 0;

var wordInputObj = document.getElementById(wordInputObjName);
var wordValueObj = document.getElementById(wordValueObjName);
           
var wordSelectObj = document.getElementById("wordSelect");
var wordSelectDivObj = document.getElementById("wordSelectDiv");


//利用activeObjId,控制select的显示和隐藏
function ShowHideSelect()
{
    var myForm = document.forms[0];
    var objType = ",text,select-one,select-multiple,checkbox,radio,file,";
   
    for(var i = 0; i < myForm.length; i++)
    {
        //控制select
        if(objType.indexOf(myForm.elements[i].type) != -1)
        {
            switch(myForm.elements[i].id)
            {
                case wordInputObj.id:
                    //input控件
                    //输入数据时,根据当前数据重新设置新的选项
                    myForm.elements[i].onkeyup = function() { ChangeOption(); }
                    //输入数据时,根据当前数据,从select中选中开头吻合的第一项
                    //myForm.elements[i].onkeyup = function() { SelectFirstOption(); }
                   
                    //控制上下箭头、回车
                    myForm.elements[i].onkeydown = function() { SelectOption(); }
                   
                    //给input添加onclick显示select,防止用户用箭头和回车选择一项后,重新点击鼠标要显示select再次选择
                    myForm.elements[i].onclick = function()
                    {
                        if(wordSelectDivObj.style.display == "none") wordSelectDivObj.style.display = "block";
                    };
                    break;
                case wordSelectObj.id:
                    //select控件
                    myForm.elements[i].onclick = function() { SetInputValue(); }
                    break;
                default:
                    //其它控件
                    myForm.elements[i].onfocus = function()
                    {
                        lastActiveObjId = activeObjId;
                        activeObjId = this.id;
                    }
                    break;
            }
           
            //input和select一样的事件
            if(myForm.elements[i].id == wordInputObj.id || myForm.elements[i].id == wordSelectObj.id)
            {
                myForm.elements[i].onfocus = function()
                {
                    lastActiveObjId = activeObjId;
                    activeObjId = this.id;
                    if(wordSelectDivObj.style.display == "none") wordSelectDivObj.style.display = "block";
                };
               
                myForm.elements[i].onblur = function()
                {                   
                    if(lastActiveObjId == wordInputObj.id && activeObjId == wordSelectObj.id)
                    {
                        //焦点从input转到select,显示
                        if(wordSelectDivObj.style.display == "none") wordSelectDivObj.style.display = "block";
                        wordSelectObj.focus();
                    }
                    else
                    {
                        if(wordSelectDivObj.style.display == "block")
                        {
                            wordSelectDivObj.style.display = "none";
                           
                            if(wordInputObj.value == "")
                            {
                                //没有录入数据
                                wordValueObj.value = "0";
                            }
                            else
                            {
                                //根据录入的数据,设置最后的录入值,保证值在选项中肯定存在
                                if(wordCount == 0)
                                {
                                    wordInputObj.value = "";
                                    wordValueObj.value = "0";
                                }
                                else
                                {
                                    wordInputObj.value = wordSelectObj.options[0].text;
                                    wordValueObj.value = wordSelectObj.options[0].value;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

function addLoadEvent(func)
{
    var oldonload = window.onload;
    if(typeof window.onload != 'function') { window.onload = func; }
    else { window.onload = function() { oldonload(); func(); } }
}
addLoadEvent(ShowHideSelect);


//点击select选择一项时,设置这一项的值到input
function SetInputValue()
{
    wordInputObj.value = wordSelectObj.options[wordSelectObj.selectedIndex].text;
    wordValueObj.value = wordSelectObj.options[wordSelectObj.selectedIndex].value;
    wordSelectDivObj.style.display = "none";
}

//如果在input里按了上箭头,select选上一项;按了下箭头则选下一项,按了回车则选中项
function SelectOption()
{
    //获取录入的键盘值:上箭头38、下箭头40、回车13
    if(window.event) e = window.event;
    var nowKeyCode = e.charCode || e.keyCode || e.which;
   
    if(nowKeyCode != 38 && nowKeyCode != 40 && nowKeyCode != 13) return;

    var activeIndex = wordSelectObj.selectedIndex;
    if(nowKeyCode == 13)
    {
        //回车
        SetInputValue();
        //终止提交表单
        e.returnValue = false;
    }
    else if(nowKeyCode == 38)
    {
        //上箭头,如果当前项是第一项,选择最后一项
        if(activeIndex == 0) activeIndex = wordCount;
        activeIndex = activeIndex - 1;
    }
    else
    {
        //下箭头,如果当前项是最后一项,选择第一项
        if(activeIndex == wordCount - 1) activeIndex = -1;
        activeIndex = activeIndex + 1;
    }
   
    //设置选项
    wordSelectObj.selectedIndex = activeIndex;
}


//如果是一次性显示所有选项,选项不变,使用这个方法
//默认按input里录入的数据,选中select中开头相同的第一个
function SelectFirstOption()
{
    //获取录入的键盘值:上箭头38、下箭头40、回车13
    if(window.event) e = window.event;
    var nowKeyCode = e.charCode || e.keyCode || e.which;
   
    if(nowKeyCode == 38 || nowKeyCode == 40) return;
   
    var firstIndex = -1;
    var nowText, inputText;
   
    //当前录入值
    inputText = wordInputObj.value;
   
    //循环检查每一项,获取第一个开头吻合的选项
    for (var i = 0; i < wordCount; i++)
    {
        nowText = wordSelectObj.options[i].text;
        if(nowText.indexOf(inputText) == 0)
        {
            firstIndex = i;
            break;
        }
    }
   
    //设置第一个开头吻合的选项为选中项
    if(firstIndex > -1)
    {
        wordSelectObj.selectedIndex = firstIndex;
    }
}

 


//按当前录入的数据修改选项,只显示有关的数据,使用这个方法
//按input里录入的数据,修改select中的选项,加入数组中符合条件的选项,修改选项总和:wordCount
var lastText = "";
function ChangeOption()
{
    //获取录入的键盘值:上箭头38、下箭头40、回车13
    if(window.event) e = window.event;
    var nowKeyCode = e.charCode || e.keyCode || e.which;
   
    if(nowKeyCode == 38 || nowKeyCode == 40) return;
   
    var firstIndex = -1;
    var nowText, inputText;
   
    //当前录入值
    lastText = inputText;
    inputText = wordInputObj.value;
   
    if(lastText == inputText || inputText == "") return;
   
    //从数组中读取和当前录入值开头吻合的项加入或去除
    if(inputText.indexOf(lastText) == -1)
    {
        //全新录入,数据项全部删除后重新添加
        wordSelectObj.options.length = 0;
        wordCount = 0;
        for(var index = 0; index < arrayLength; index++)
        {
            if(wordArray[index].indexOf(inputText) == 0 || phonicsArray[index].indexOf(inputText) == 0)
            {
                wordSelectObj.options[wordCount] = new Option (wordArray[index], wordIdArray[index]);
                wordCount++;
            }
        }
        if(wordCount == 0)
        {
            wordSelectObj.style.height = "0px";
        }
        if(wordCount > 5)
        {
            wordSelectObj.style.height = "84px";
        }
        else
        {
            wordSelectObj.style.height = eval((wordCount + 1) * 14) + "px";
        }
    }
}

-------------------------------------------------------

2010-12-02 17:05 以下方法有错,正确方法见:http://www.nnllok.cn/Read.aspx?id=474

错误分析见:http://www.nnllok.cn/Read.aspx?id=473

-------------------------------------------------------

附上生成字符串拼音的方法

#region 取汉字字符串的拼音,如果字符串中包含非汉字,以原字符显示
    /// <summary>
    /// 取汉字字符串的拼音,如果字符串中包含非汉字,以原字符显示
    /// </summary>
    /// <param name="chinese">字符串</param>
    /// <returns></returns>
    public static string GetPhonics(string chinese)
    {
        if (String.IsNullOrEmpty(chinese)) return "";

        //根据拼音分段汉字编码
        int[] phonicsCode = new int[] { -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, -20230, -20051, -20036, -20032, -20026, -20002, -19990, -19986, -19982, -19976, -19805, -19784, -19775, -19774, -19763, -19756, -19751, -19746, -19741, -19739, -19728, -19725, -19715, -19540, -19531, -19525, -19515, -19500, -19484, -19479, -19467, -19289, -19288, -19281, -19275, -19270, -19263, -19261, -19249, -19243, -19242, -19238, -19235, -19227, -19224, -19218, -19212, -19038, -19023, -19018, -19006, -19003, -18996, -18977, -18961, -18952, -18783, -18774, -18773, -18763, -18756, -18741, -18735, -18731, -18722, -18710, -18697, -18696, -18526, -18518, -18501, -18490, -18478, -18463, -18448, -18447, -18446, -18239, -18237, -18231, -18220, -18211, -18201, -18184, -18183, -18181, -18012, -17997, -17988, -17970, -17964, -17961, -17950, -17947, -17931, -17928, -17922, -17759, -17752, -17733, -17730, -17721, -17703, -17701, -17697, -17692, -17683, -17676, -17496, -17487, -17482, -17468, -17454, -17433, -17427, -17417, -17202, -17185, -16983, -16970, -16942, -16915, -16733, -16708, -16706, -16689, -16664, -16657, -16647, -16474, -16470, -16465, -16459, -16452, -16448, -16433, -16429, -16427, -16423, -16419, -16412, -16407, -16403, -16401, -16393, -16220, -16216, -16212, -16205, -16202, -16187, -16180, -16171, -16169, -16158, -16155, -15959, -15958, -15944, -15933, -15920, -15915, -15903, -15889, -15878, -15707, -15701, -15681, -15667, -15661, -15659, -15652, -15640, -15631, -15625, -15454, -15448, -15436, -15435, -15419, -15416, -15408, -15394, -15385, -15377, -15375, -15369, -15363, -15362, -15183, -15180, -15165, -15158, -15153, -15150, -15149, -15144, -15143, -15141, -15140, -15139, -15128, -15121, -15119, -15117, -15110, -15109, -14941, -14937, -14933, -14930, -14929, -14928, -14926, -14922, -14921, -14914, -14908, -14902, -14894, -14889, -14882, -14873, -14871, -14857, -14678, -14674, -14670, -14668, -14663, -14654, -14645, -14630, -14594, -14429, -14407, -14399, -14384, -14379, -14368, -14355, -14353, -14345, -14170, -14159, -14151, -14149, -14145, -14140, -14137, -14135, -14125, -14123, -14122, -14112, -14109, -14099, -14097, -14094, -14092, -14090, -14087, -14083, -13917, -13914, -13910, -13907, -13906, -13905, -13896, -13894, -13878, -13870, -13859, -13847, -13831, -13658, -13611, -13601, -13406, -13404, -13400, -13398, -13395, -13391, -13387, -13383, -13367, -13359, -13356, -13343, -13340, -13329, -13326, -13318, -13147, -13138, -13120, -13107, -13096, -13095, -13091, -13076, -13068, -13063, -13060, -12888, -12875, -12871, -12860, -12858, -12852, -12849, -12838, -12831, -12829, -12812, -12802, -12607, -12597, -12594, -12585, -12556, -12359, -12346, -12320, -12300, -12120, -12099, -12089, -12074, -12067, -12058, -12039, -11867, -11861, -11847, -11831, -11798, -11781, -11604, -11589, -11536, -11358, -11340, -11339, -11324, -11303, -11097, -11077, -11067, -11055, -11052, -11045, -11041, -11038, -11024, -11020, -11019, -11018, -11014, -10838, -10832, -10815, -10800, -10790, -10780, -10764, -10587, -10544, -10533, -10519, -10331, -10329, -10328, -10322, -10315, -10309, -10307, -10296, -10281, -10274, -10270, -10262, -10260, -10256, -10254 };

        //汉字对应的所有拼音
        string[] phonics = new string[] { "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga", "gai", "gan", "gang", "gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "lv", "luan", "lue", "lun", "luo", "ma", "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nv", "nuan", "nue", "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", "qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", "xuan", "xue", "xun", "ya", "yan", "yang", "yao", "ye", "yi", "yin", "ying", "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", "zui", "zun", "zuo" };

        StringBuilder sbPhonics = new StringBuilder("");

        //循环字符串中的每一个字符
        char[] cnChar = chinese.ToCharArray();
        foreach (char c in cnChar)
        {
            //如果不是双字节字符,则为原字符
            if (Encoding.Default.GetByteCount(c.ToString()) != 2)
            {
                sbPhonics.Append(c.ToString());
                continue;
            }

            //取双字节字符的ASCII码:双字节码为高位乘256,再加低位;改为无符号码,再减65536
            byte[] codebytes = Encoding.Default.GetBytes(c.ToString());
            int charCode = (int)codebytes[0] * 256 + (int)codebytes[1] - 65536;

            //循环拼音分段编码,根据ASCII码,获取对应的拼音
            int phonicsLen = phonicsCode.Length - 1;
            for (int i = phonicsLen; i >= 0; i--)
            {
                if (phonicsCode[i] <= charCode)
                {
                    sbPhonics.Append(phonics[i]);
                    break;
                }
            }
        }

        return sbPhonics.ToString();
    }
    #endregion

下面这个方法是取汉字首字母的,从网上一个vb的方法改成的,这个页面里没有用上,就是,我是根据这个方法改取字符串拼音的方法的,取ASCII码的计算方法相同,一起记录

#region 改写VB的方法取汉字首字母
    /// <summary>
    /// 从一个字符串中提取汉字首字母,如果是中间有别的字符,直接取回该字符
    /// </summary>
    /// <param name="chinese">要提取的字符串</param>
    /// <returns></returns>
    public static string GetPhonics(string chinese)
    {
        int len = chinese.Length;
        char[] charArray = new char[len];
        //byte[] byteArray = new byte[2];

        for (int i = 0; i < len; i++)
        {
            charArray[i] = GetLetter(chinese[i]);
            //byteArray = System.Text.Encoding.Default.GetBytes(chinese[i].ToString());
        }

        string txt = new string(charArray);
        return txt;
    }
    /// <summary>
    /// 取一个汉字的首字母
    /// </summary>
    /// <param name="c"></param>
    /// <returns></returns>
    private static char GetLetter(char c)
    {
        int codeNum;
        codeNum = 65536 + GetAscii(c);
        if (codeNum >= 45217 && codeNum <= 45252) { return 'A'; }
        else if (codeNum >= 45253 && codeNum <= 45760) { return 'B'; }
        else if (codeNum >= 45761 && codeNum <= 46317) { return 'C'; }
        else if (codeNum >= 46318 && codeNum <= 46825) { return 'D'; }
        else if (codeNum >= 46826 && codeNum <= 47009) { return 'E'; }
        else if (codeNum >= 47010 && codeNum <= 47296) { return 'F'; }
        else if (codeNum >= 47297 && codeNum <= 47613) { return 'G'; }
        else if (codeNum >= 47614 && codeNum <= 48118) { return 'H'; }
        else if (codeNum >= 48119 && codeNum <= 49061) { return 'J'; }
        else if (codeNum >= 49062 && codeNum <= 49323) { return 'K'; }
        else if (codeNum >= 49324 && codeNum <= 49895) { return 'L'; }
        else if (codeNum >= 49896 && codeNum <= 50370) { return 'M'; }
        else if (codeNum >= 50371 && codeNum <= 50613) { return 'N'; }
        else if (codeNum >= 50614 && codeNum <= 50621) { return 'O'; }
        else if (codeNum >= 50622 && codeNum <= 50905) { return 'P'; }
        else if (codeNum >= 50906 && codeNum <= 51386) { return 'Q'; }
        else if (codeNum >= 51387 && codeNum <= 51445) { return 'R'; }
        else if (codeNum >= 51446 && codeNum <= 52217) { return 'S'; }
        else if (codeNum >= 52218 && codeNum <= 52697) { return 'T'; }
        else if (codeNum >= 52698 && codeNum <= 52979) { return 'W'; }
        else if (codeNum >= 52980 && codeNum <= 53688) { return 'X'; }
        else if (codeNum >= 53689 && codeNum <= 54480) { return 'Y'; }
        else if (codeNum >= 54481 && codeNum <= 62289) { return 'Z'; }
        else return c;
    }
    /// <summary>
    /// 取一个字符的ASCII码
    /// </summary>
    /// <param name="c"></param>
    /// <returns></returns>
    private static int GetAscii(char c)
    {
        Encoding ecode = Encoding.GetEncoding("gb18030");
        byte[] codebytes = ecode.GetBytes(c.ToString());

        if (IsTwoBytesChar(c))
        {
            //双字节码为高位乘256,再加低位
            //该为无符号码,再减65536
            return (int)codebytes[0] * 256 + (int)codebytes[1] - 65536;
        }
        else
        {
            return (int)codebytes[0];
        }
    }
    /// <summary>
    /// 是否为双字节字符
    /// </summary>
    public static bool IsTwoBytesChar(char c)
    {
        string str = c.ToString();
        //使用中文支持编码
        Encoding ecode = Encoding.GetEncoding("gb18030");
        if (ecode.GetByteCount(str) == 2)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    #endregion

小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字皖ICP备06000023号-17