UNPKG

rc-virtual-keyboard

Version:
47 lines (42 loc) 1.16 kB
import dictionaries from "../lib/dictionaries"; /** 获取单个汉字 */ export function getSingleChinese(pinyin) { return dictionaries[pinyin]; } /** 拼音转汉字 */ export function pinyin2ChineseV1(pinyin) { var chinese = getSingleChinese(pinyin); if (chinese) { return { pinyin: pinyin, chinese: chinese.split("") }; } var temp = ""; for (var i = 0, len = pinyin.length; i < len; i++) { temp += pinyin[i]; chinese = getSingleChinese(temp); if (!chinese) continue; // flag表示如果当前能匹配到结果、并且往后5个字母不能匹配结果,因为最长可能是5个字母,如 zhuang var flag = false; if (i + 1 < pinyin.length) { for (var j = 1, _len = pinyin.length; j <= 5 && i + j < _len; j++) { if (getSingleChinese(pinyin.substr(0, i + j + 1))) { flag = true; break; } } } if (!flag) { return { pinyin: pinyin.substr(0, i + 1) + "'" + pinyin.substr(i + 1), chinese: chinese.split("") }; } } // 理论上一般不会出现这种情况 return { pinyin: "", chinese: [] }; }