Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="hanziStr"></param>
        /// <param name="targetPinyinSystem"></param>
        /// <returns></returns>
        public static string HanyuToRomanizationString(string hanziStr, PinyinRomanizationType targetPinyinSystem)
        {
            var pinyin       = string.Empty;
            var romanization = RomanizationConvert.GetInstance();

            foreach (var hanzi in hanziStr)
            {
                if (!Util.IsHanzi(hanzi))
                {
                    continue;
                }

                var pinyinStrArray = ChineseToPinyinConvert.GetInstance().GetHanyuPinyinStringArray(hanzi);

                if (null != pinyinStrArray)
                {
                    if (pinyinStrArray.Length == 1)
                    {
                        pinyin += romanization.GetRomanizationString(pinyinStrArray[0], PinyinRomanizationType.HANYU_PINYIN, targetPinyinSystem);
                    }
                    else
                    {
                        var arr = new string[] {};
                        for (var i = 0; i < pinyinStrArray.Length; i++)
                        {
                            arr[i] = romanization.GetRomanizationString(pinyinStrArray[i], PinyinRomanizationType.HANYU_PINYIN, targetPinyinSystem);
                        }
                        pinyin += "(" + string.Join(",", arr) + ") ";
                    }
                }
                else
                {
                    return(string.Empty);
                }
            }
            return(pinyin);
        }
Exemplo n.º 2
0
        public string GetRomanizationString(string sourcePinyinStr, PinyinRomanizationType sourcePinyinSystem, PinyinRomanizationType targetPinyinSystem)
        {
            var pinyinString  = Util.ExtractPinyinString(sourcePinyinStr);
            var toneNumberStr = Util.ExtractToneNumber(sourcePinyinStr);

            // return value
            var targetPinyinStr = string.Empty;

            try
            {
                // find the node of source Pinyin system
                var xpathQuery1 = "//" + sourcePinyinSystem.TagName
                                  + "[text()='" + pinyinString + "']";

                var pinyinMappingDoc = _pinyinMappingDoc;

                var hanyuNode = pinyinMappingDoc.SelectSingleNode(xpathQuery1);

                if (null != hanyuNode)
                {
                    // find the node of target Pinyin system
                    var xpathQuery2 = "../" + targetPinyinSystem.TagName
                                      + "/text()";
                    var targetPinyinStrWithoutToneNumber = hanyuNode.SelectSingleNode(xpathQuery2).Value;

                    targetPinyinStr = targetPinyinStrWithoutToneNumber
                                      + toneNumberStr;
                }
            }
            catch (Exception e)
            {
                FileLogServices.WriteLogToFile(e.ToString());
            }

            return(targetPinyinStr);
        }