您的位置:首页 > 其它

提取汉字拼音的首字母+英文+数字

2011-04-21 21:36 411 查看
从网上找了个提取汉字拼音的例子,但是不通用于英文单词和数字,加之修改了一下,实现了

简单的功能,因为特殊的汉字还是不能提取出拼音的首字母的返回“”,测试实例和具体代码如下:

效果图1:



效果图2:



效果图3:



效果图4:



代码如下:

//这个方法是用来获得一个字符串的每个字的拼音首字母、英文单词或者数字等组成所需的字符串
private string GetChineseSpell(string strText)
{
string myStr = "";
//把传进来的字符串用空格分隔
string[] arr = strText.Split(' ');
//判断得到数组arr的长度,如果长度是1 就直接提取,如果不是就进入判断
if (arr.Length != 1)
{
//根据arr[j]的长度循环
for (int j = 0; j < arr.Length; j++)
{   //定义变量下面取数字用
int m = 0;
bool falg = false;
//判读是否为字母或者数字
foreach (char var in arr[j].ToString())
{
//判断为字母
if (var >= 'A' && var <= 'Z' || var >= 'a' && var <= 'z')
{
falg = true;
m++;

}
//判读为数字
if (char.IsDigit(var))
{
m = -1;
}
}
//如果m==arr[j].Length 证明都为字母
if (m == arr[j].Length)
{
myStr += getSpell(arr[j].ToString().Substring(0, 1));
}
//如果m==-1 证明为数字或者有数字出现
else if (m == -1)
{

for (int n = 0; n < arr[j].Length; n++)
{
myStr += getSpell(arr[j].ToString().Substring(n, 1));
}
}
//其他,例如数字和字母连在一起等
else
{

int len = arr[j].ToString().Length;

for (int i = 0; i < len; i++)
{
myStr += getSpell(arr[j].ToString().Substring(i, 1));
}
}

}
}
else
{
int len = strText.Length;

for (int i = 0; i < len; i++)
{
myStr += getSpell(strText.Substring(i, 1));
}

}

return myStr;
}

//用来获得一个字的拼音首字母
private string getSpell(string cnChar)
{
//将汉字转化为ASNI码,二进制序列
byte[] arrCN = Encoding.Default.GetBytes(cnChar);

if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;
int[] areacode = {45217,45253,45761,46318,46826,47010,47297,47614,48119,48119,49062,
49324,49896,50371,50614,50622,50906,51387,51446,52218,52698,52698,52698,52980,53689,
54481};
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return " ";
}
else
{
return cnChar.Substring(0, 1).ToUpper().ToString();
}
}


调用方法:

protected void btnClick_Click(object sender, EventArgs e)
{
string strText = GetChineseSpell(this.txtFirst.Text.Trim().ToString());

this.txtEnd.Text = strText.ToString();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: