winform 如何实现字典的速录
数据库中存在字典行数据,在窗体上输入部分拼音就能出现字典中包括这些拼音的汉字,例如 字典中有“河西区大沽南路”“河东区区易做图”,在输入“hd”时就会出现“河东区区易做图”,用代码如何实现?
--------------------编程问答--------------------
/// <summary>
/// 返回汉字字符串的拼音的首字母
/// </summary>
/// <param name="chinesestr">要转换的字符串</param>
/// <returns></returns>
public static string Chinesecap(string chinesestr)
{
byte[] zw = new byte[2];
long chinesestr_int;
string charstr, chinastr = null, capstr = null;
for (int i = 0; i <= chinesestr.Length - 1; i++)
{
charstr = chinesestr.Substring(i, 1).ToString();
if (charstr == " ")
{
continue;
}
zw = System.Text.Encoding.Default.GetBytes(charstr);
// 得到汉字符的字节数组
if (zw.Length == 2)
{
int i1 = (short)(zw[0]);
int i2 = (short)(zw[1]);
chinesestr_int = i1 * 256 + i2;
//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
if ((chinesestr_int >= 45217) && (chinesestr_int <= 45252))
{
chinastr = "a";
}
else if ((chinesestr_int >= 45253) && (chinesestr_int <= 45760))
{
chinastr = "b";
}
else if ((chinesestr_int >= 45761) && (chinesestr_int <= 46317))
{
chinastr = "c";
}
else if ((chinesestr_int >= 46318) && (chinesestr_int <= 46825))
{
chinastr = "d";
}
else if ((chinesestr_int >= 46826) && (chinesestr_int <= 47009))
{
chinastr = "e";
}
else if ((chinesestr_int >= 47010) && (chinesestr_int <= 47296))
{
chinastr = "f";
}
else if ((chinesestr_int >= 47297) && (chinesestr_int <= 47613))
{
chinastr = "g";
}
else if ((chinesestr_int >= 47614) && (chinesestr_int <= 48118))
{
chinastr = "h";
}
else if ((chinesestr_int >= 48119) && (chinesestr_int <= 49061))
{
chinastr = "j";
}
else if ((chinesestr_int >= 49062) && (chinesestr_int <= 49323))
{
chinastr = "k";
}
else if ((chinesestr_int >= 49324) && (chinesestr_int <= 49895))
{
chinastr = "l";
}
else if ((chinesestr_int >= 49896) && (chinesestr_int <= 50370))
{
chinastr = "m";
}
else if ((chinesestr_int >= 50371) && (chinesestr_int <= 50613))
{
chinastr = "n";
}
else if ((chinesestr_int >= 50614) && (chinesestr_int <= 50621))
{
chinastr = "o";
}
else if ((chinesestr_int >= 50622) && (chinesestr_int <= 50905))
{
chinastr = "p";
}
else if ((chinesestr_int >= 50906) && (chinesestr_int <= 51386))
{
chinastr = "q";
}
else if ((chinesestr_int >= 51387) && (chinesestr_int <= 51445))
{
chinastr = "r";
}
else if ((chinesestr_int >= 51446) && (chinesestr_int <= 52217))
{
chinastr = "s";
}
else if ((chinesestr_int >= 52218) && (chinesestr_int <= 52697))
{
chinastr = "t";
}
else if ((chinesestr_int >= 52698) && (chinesestr_int <= 52979))
{
chinastr = "w";
}
else if ((chinesestr_int >= 52980) && (chinesestr_int <= 53640))
{
chinastr = "x";
}
else if ((chinesestr_int >= 53689) && (chinesestr_int <= 54480))
{
chinastr = "y";
}
else if ((chinesestr_int >= 54481) && (chinesestr_int <= 55289))
{
chinastr = "z";
}
}
else
{
capstr = chinesestr;
break;
}
capstr = capstr + chinastr;
}
return capstr;
}
--------------------编程问答--------------------
搜索汉字转拼音
补充:.NET技术 , C#