1、WPF的一个触摸屏项目,需要输入姓名,但是屏幕不支持汉字输入,使用虚拟键盘不稳定,为了解决该问题特此进行处理。
2、新建一个类转换类,里面初始化一个数组,数组包含拼音,以及拼音下的常用的汉字。
3、根据拼音,对照出对应的汉字,然后在对汉字进行拆分,获取到单个汉字。
例子如下:
 private static readonly string[][] _Allhz =
         new string[][]
           {
            new string[]{"A","啊阿呵吖嗄腌锕錒"},
            new string[]{"Ai","爱矮挨哎碍癌艾唉哀蔼隘埃皑呆嗌嫒瑷暧捱砹"},
            new string[]{"An","按安暗岸俺案鞍氨胺厂广庵揞犴铵桉谙鹌埯黯"},
            new string[]{"Ang","昂肮盎仰卬岇昻枊醃醠骯"},
            new string[]{"Ao","袄凹傲奥熬懊敖翱澳嚣拗媪廒骜嗷坳遨聱螯獒鏊鳌鏖"},
            new string[]{"Ba","把八吧爸拔罢跋巴芭扒坝霸叭靶笆疤耙捌粑茇岜鲅钯魃菝灞"},
            new string[]{"Bai","百白摆败柏拜佰伯稗捭呗掰"},
~~~~~~~~//省去若干
            new string[]{"Zui","最嘴醉罪堆咀觜蕞"},
            new string[]{"Zun","尊遵鳟撙樽僎僔噂墫奠嶟拵捘捽栫瀳繜罇袸譐跧踆蹲銌鐏鱒鶎鷷"},
            new string[]{"Zuo","做作坐左座昨凿琢撮佐笮"}
           };
/// <summary>
        /// 拼音转汉字
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string ConvertPzToHz(string str)
        {
            str = str.ToLower();
            if (str == null)
                return null;
            byte[] bAry = new byte[2];
            StringBuilder rtnSb = new StringBuilder();
            for (int j = 0; j < _Allhz.Length; j++)
            {
                string py = _Allhz[j][0].ToLower();
                if (py.IndexOf(str) != -1)
                {
                    rtnSb.Append(_Allhz[j][1]);
                    break;
                }
            }
            return rtnSb.ToString();
        }
//对汉字字符串进行分解
char[] chars = strMsg.ToCharArray();