汉字转成拼音首字母

在做公交查询系统时,要求用户输入起点和终点。可是如果用户输错了,自己要判断,很麻烦,因为我的算法全是SQL。于是就想了一种折衷的方案:让用户从DropDownList里选。这样既方便了用户,也方便了自己。

可是,如果全部站点放入一个DropDownList的话,太多了(我这个济南的有一千多个啊),所以就先选择汉字的拼音首字母,再选择站点,实验证明很方便,速度很快!

这里用到了一个汉字转拼音的函数:

         static   string  Extract_HZ( string  HZ)
        
{
            
byte[] ZW = new byte[2];
            
long HZ_INT;
            ZW 
= System.Text.Encoding.Default.GetBytes(HZ);//   get   the     array   of   byte   from   the   single   char     
            int i1 = (short)(ZW[0]);
            
int i2 = (short)(ZW[1]);
            HZ_INT 
= i1 * 256 + i2;   //     expresstion   
            
//   HZ_INT match     the   constant   
            if ((HZ_INT >= 45217&& (HZ_INT <= 45252))
            
{
                
return "A";
            }

            
if ((HZ_INT >= 45253&& (HZ_INT <= 45760))
            
{
                
return "B";
            }

            
if ((HZ_INT >= 45761&& (HZ_INT <= 46317))
            
{
                
return "C";

            }

            
if ((HZ_INT >= 46318&& (HZ_INT <= 46825))
            
{
                
return "D";
            }

            
if ((HZ_INT >= 46826&& (HZ_INT <= 47009))
            
{
                
return "E";
            }

            
if ((HZ_INT >= 47010&& (HZ_INT <= 47296))
            
{
                
return "F";
            }

            
if ((HZ_INT >= 47297&& (HZ_INT <= 47613))
            
{
                
return "G";
            }

            
//**************************   
            if ((HZ_INT >= 47614&& (HZ_INT <= 48118))
            
{
                
//MessageBox.Show("H");   
                return "H";
            }


            
if ((HZ_INT >= 48119&& (HZ_INT <= 49061))
            
{
                
return "J";
            }

            
if ((HZ_INT >= 49062&& (HZ_INT <= 49323))
            
{
                
return "K";
            }

            
if ((HZ_INT >= 49324&& (HZ_INT <= 49895))
            
{
                
return "L";
            }

            
if ((HZ_INT >= 49896&& (HZ_INT <= 50370))
            
{
                
return "M";
            }


            
if ((HZ_INT >= 50371&& (HZ_INT <= 50613))
            
{
                
return "N";

            }

            
if ((HZ_INT >= 50614&& (HZ_INT <= 50621))
            
{
                
return "O";
            }

            
if ((HZ_INT >= 50622&& (HZ_INT <= 50905))
            
{
                
return "P";

            }

            
if ((HZ_INT >= 50906&& (HZ_INT <= 51386))
            
{
                
return "Q";

            }

            
//*********************   
            if ((HZ_INT >= 51387&& (HZ_INT <= 51445))
            
{
                
return "R";
            }

            
if ((HZ_INT >= 51446&& (HZ_INT <= 52217))
            
{
                
return "S";
            }

            
if ((HZ_INT >= 52218&& (HZ_INT <= 52697))
            
{
                
return "T";
            }

            
if ((HZ_INT >= 52698&& (HZ_INT <= 52979))
            
{
                
return "W";
            }

            
if ((HZ_INT >= 52980&& (HZ_INT <= 53640))
            
{
                
return "X";
            }

            
if ((HZ_INT >= 53689&& (HZ_INT <= 54480))
            
{
                
return "Y";
            }

            
if ((HZ_INT >= 54481&& (HZ_INT <= 55289))
            
{
                
return "Z";
            }

            
return ("");
        }

把索引字母全部插入数据库后,我发现有些字这个函数没有处理。可能有些偏僻的字没有判断吧?不过就十几个,我手工加上了。。。。。
刚做完一次转乘,速度很快嘛,不用什么临时表了吧? 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Excel 中将中文转换拼音首字母,需要用到 Excel 中的 CONCATENATE 函数和 VBA 中的函数。具体步骤如下: 1. 打开 Excel 文档,选中需要转换的中文文字所在的单元格。 2. 在单元格中输入以下公式: =CONCATENATE(IF(ISERROR(FIND(LEFT(B1,1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ")), LEFT(B1,1), ""), IF(ISERROR(FIND(MID(B1,2,1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ")), MID(B1,2,1), ""), IF(ISERROR(FIND(MID(B1,3,1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ")), MID(B1,3,1), ""), IF(ISERROR(FIND(MID(B1,4,1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ")), MID(B1,4,1), "")) 其中,B1 表示需要转换的中文文字所在的单元格。 3. 按下 Enter 键,完成公式输入。此时,该单元格中的中文文字已经转换成了拼音首字母。 4. 如果需要批量转换多个中文文字,可以将公式拖动到需要转换的单元格范围内,再按下 Ctrl+Enter 键,即可完成批量转换。 5. 如果需要将上述公式导入到 VBA 中,可以使用以下 VBA 函数: Function ChineseToPinyin(ByVal str As String) As String Dim i As Integer For i = 1 To Len(str) If AscW(Mid(str, i, 1)) < 19968 Or AscW(Mid(str, i, 1)) > 40869 Then ChineseToPinyin = ChineseToPinyin & Mid(str, i, 1) Else ChineseToPinyin = ChineseToPinyin & Left(Application.WorksheetFunction.VLookup(Mid(str, i, 1), Range("A1:B405"), 2, False), 1) End If Next i End Function 其中,Range("A1:B405") 是一个包含中文字符和对应拼音首字母的数据表格。在使用该函数时,需要将该数据表格插入到 Excel 中,并修改代码中的数据表格范围和单元格引用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值