首字母抓取查询功能

关键字:首字母;汉字转化字母;GetBytes;中文编码

         很多商业逻辑都会冒出一些稀奇古怪却又不得不作的问题,比方说首字母查询.例:资料库中有资料如下CompanyName为"一等一科技有限公司",而User需要输入"YDYKJYXGS"(即每个字的首字母)而直接定位到该笔资料.此时要如何实现呢,相信最简单的方式莫过于:在资料表中加入一栏位:HotKey,内容即此首字母组合.那么在Query资料时,直接like就可以获取资料.

        下面介绍如何取得一个中文汉字的首字母:

public string Extract_HZ(string HZstr)
        {
            string output = "";
            for (int index = 0; index < HZstr.Length; index++)
            {
                string HZ = HZstr[index].ToString();
                byte[] ZW = new byte[2];
                long HZ_INT;
                ZW = System.Text.Encoding.Default.GetBytes(HZ);
                if (ZW.Length < 2)
                {
                    output += HZ;
                    continue;
                }
                int i1 = (short)(ZW[0]);
                int i2 = (short)(ZW[1]);
                HZ_INT = i1 * 256 + i2;
                #region 转换成拼音的小写首字母
                if ((HZ_INT >= 45217) && (HZ_INT <= 45252))
                {
                    output += "a"; continue;
                }
                if ((HZ_INT >= 45253) && (HZ_INT <= 45760))
                {
                    output += "b"; continue;
                }
                if ((HZ_INT >= 45761) && (HZ_INT <= 46317))
                {
                    output += "c"; continue;

                }
                if ((HZ_INT >= 46318) && (HZ_INT <= 46825))
                {
                    output += "d"; continue;
                }
                if ((HZ_INT >= 46826) && (HZ_INT <= 47009))
                {
                    output += "e"; continue;
                }
                if ((HZ_INT >= 47010) && (HZ_INT <= 47296))
                {
                    output += "f"; continue;
                }
                if ((HZ_INT >= 47297) && (HZ_INT <= 47613))
                {
                    output += "g"; continue;
                }
                if ((HZ_INT >= 47614) && (HZ_INT <= 48118))
                {
                    output += "h"; continue;
                }

                if ((HZ_INT >= 48119) && (HZ_INT <= 49061))
                {
                    output += "j"; continue;
                }
                if ((HZ_INT >= 49062) && (HZ_INT <= 49323))
                {
                    output += "k"; continue;
                }
                if ((HZ_INT >= 49324) && (HZ_INT <= 49895))
                {
                    output += "l"; continue;
                }
                if ((HZ_INT >= 49896) && (HZ_INT <= 50370))
                {
                    output += "m"; continue;
                }

                if ((HZ_INT >= 50371) && (HZ_INT <= 50613))
                {
                    output += "n"; continue;

                }
                if ((HZ_INT >= 50614) && (HZ_INT <= 50621))
                {
                    output += "o"; continue;
                }
                if ((HZ_INT >= 50622) && (HZ_INT <= 50905))
                {
                    output += "p"; continue;

                }
                if ((HZ_INT >= 50906) && (HZ_INT <= 51386))
                {
                    output += "q"; continue;

                }
                if ((HZ_INT >= 51387) && (HZ_INT <= 51445))
                {
                    output += "r"; continue;
                }
                if ((HZ_INT >= 51446) && (HZ_INT <= 52217))
                {
                    output += "s"; continue;
                }
                if ((HZ_INT >= 52218) && (HZ_INT <= 52697))
                {
                    output += "t"; continue;
                }
                if ((HZ_INT >= 52698) && (HZ_INT <= 52979))
                {
                    output += "w"; continue;
                }
                if ((HZ_INT >= 52980) && (HZ_INT <= 53640))
                {
                    output += "x"; continue;
                }
                if ((HZ_INT >= 53689) && (HZ_INT <= 54480))
                {
                    output += "y"; continue;
                }
                if ((HZ_INT >= 54481) && (HZ_INT <= 55289))
                {
                    output += "z"; continue;
                }
                #endregion
            }
            return output;
        }

以上仅适用简体中文,如果是繁体中文,可的尝试下列方法:

  if (HZ.CompareTo("吖") < 0)
                    {
                        output += HZ; continue;
                    }
                    if (HZ.CompareTo("八") < 0)
                    {
                        output += "a"; continue;
                    }

                    if (HZ.CompareTo("嚓") < 0)
                    {
                        output += "b"; continue;
                    }

                    if (HZ.CompareTo("咑") < 0)
                    {
                        output += "c"; continue;
                    }
                    if (HZ.CompareTo("妸") < 0)
                    {
                        output += "d"; continue;
                    }
                    if (HZ.CompareTo("发") < 0)
                    {
                        output += "e"; continue;
                    }
                    if (HZ.CompareTo("旮") < 0)
                    {
                        output += "f"; continue;
                    }
                    if (HZ.CompareTo("铪") < 0)
                    {
                        output += "g"; continue;
                    }
                    if (HZ.CompareTo("讥") < 0)
                    {
                        output += "h"; continue;
                    }
                    if (HZ.CompareTo("咔") < 0)
                    {
                        output += "j"; continue;
                    }
                    if (HZ.CompareTo("垃") < 0)
                    {
                        output += "k"; continue;
                    }
                    if (HZ.CompareTo("嘸") < 0)
                    {
                        output += "l"; continue;
                    }
                    if (HZ.CompareTo("拏") < 0)
                    {
                        output += "m"; continue;
                    }
                    if (HZ.CompareTo("噢") < 0)
                    {
                        output += "n"; continue;
                    }
                    if (HZ.CompareTo("妑") < 0)
                    {
                        output += "o"; continue;
                    }
                    if (HZ.CompareTo("七") < 0)
                    {
                        output += "p"; continue;
                    }
                    if (HZ.CompareTo("亽") < 0)
                    {
                        output += "q"; continue;
                    }
                    if (HZ.CompareTo("仨") < 0)
                    {
                        output += "r"; continue;
                    }
                    if (HZ.CompareTo("他") < 0)
                    {
                        output += "s"; continue;
                    }
                    if (HZ.CompareTo("哇") < 0)
                    {
                        output += "t"; continue;
                    }
                    if (HZ.CompareTo("夕") < 0)
                    {
                        output += "w"; continue;
                    }
                    if (HZ.CompareTo("丫") < 0)
                    {
                        output += "x"; continue;
                    }
                    if (HZ.CompareTo("帀") < 0)
                    {
                        output += "y"; continue;
                    }
                    if (HZ.CompareTo("咗") < 0)
                    {
                        output += "z"; continue;
                    }


如有更好想法,欢迎一起讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值