/// <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); }
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); }