convertToMultiPinyin static method

MultiPinyin? convertToMultiPinyin(
  1. String str,
  2. String separator,
  3. PinyinFormat format
)

获取多音字拼音 @param str 需要转换的字符串 @param separator 拼音分隔符 @param format 拼音格式 @return 多音字拼音

Implementation

static MultiPinyin? convertToMultiPinyin(
    String str, String separator, PinyinFormat format) {
  if (str.length < minMultiLength) return null;
  if (maxMultiLength == 0) {
    List<String> keys = multiPinyinMap.keys.toList();
    for (int i = 0, length = keys.length; i < length; i++) {
      if (keys[i].length > maxMultiLength) {
        maxMultiLength = keys[i].length;
      }
    }
  }
  for (int end = minMultiLength, length = str.length;
      (end <= length && end <= maxMultiLength);
      end++) {
    String subStr = str.substring(0, end);
    String? multi = multiPinyinMap[subStr];
    if (multi != null && multi.isNotEmpty) {
      List<String> str = multi.split(pinyinSeparator);
      StringBuffer sb = StringBuffer();
      str.forEach((value) {
        List<String> pinyin = formatPinyin(value, format);
        sb.write(pinyin[0]);
        sb.write(separator);
      });
      return MultiPinyin(word: subStr, pinyin: sb.toString());
    }
  }
  return null;
}