设置页面:
代码意思见注解就不一一解析了
//建立一个convertCh方法用于将汉字转换成全拼的拼音,其中,参数代表汉字字符串,此方法的返回值是转换后的拼音字符串
public static string convertCh(string Chstr)
{
Regex reg= new Regex("^[\u4e00-\u9fa5]$");//验证是否输入汉字
byte[] arr= new byte[2];
string pystr = "";
int asc = 0,M1 = 0,M2 = 0;
char[] mChar = Chstr.ToCharArray();//获取汉字对应的字符数组
for (int j = 0; j < mChar.Length; j++)
{ //如果输入的是汉字
if (reg.IsMatch(mChar[j].ToString()))
{
arr = System.Text.Encoding.Default.GetBytes(mChar[j].ToString());
M1 = (short)(arr[0]);
M2 = (short)(arr[1]);
asc = M1 * 256 + M2 - 65536;
if (asc > 0 && asc < 160)
{ pystr += mChar[j];
} else
{switch (asc)
{
case -9254: pystr += "Zhen"; break;
case -8985: pystr += "Qian"; break;
case -5463: pystr += "Jia"; break;
case -8274: pystr += "Ge"; break;
case -5448: pystr += "Ga"; break;
case -5447: pystr += "La"; break;
case -4649: pystr += "Chen"; break;
case -5436: pystr += "Mao"; break;
case -5213: pystr += "Mao"; break;
case -3597: pystr += "Die"; break;
case -5659: pystr += "Tian"; break;
default:
for (int i = (getValue.Length - 1); i >= 0; i--)
{
if (getValue[i] <= asc)//判断汉字的拼音区编码是否在指定范围内
{
pystr += getName[i];//如果不超出范围则获取对应的拼音
break;
}
}
break;
} } }
else//如果不是汉字
{
pystr += mChar[j].ToString();//如果不是汉字则返回
}
}
return pystr;//返回获取到的汉字拼音
}
}
装换按钮:
private void button1_Click(object sender, EventArgs e)
{
txtpy.Text = ChnToPh.convertCh(txthz.Text);
}
效果图如下: