汉字转成拼音首字母

2018-05-21 14:53:28 浏览数 (1)

在做公交查询系统时,要求用户输入起点和终点。可是如果用户输错了,自己要判断,很麻烦,因为我的算法全是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 人点赞