Last active
July 28, 2017 02:28
-
-
Save tiiime/a8a7ba2fbf5e41026dec7ace0934316b to your computer and use it in GitHub Desktop.
Pinyin.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private const val 多音字分隔符 = "'" | |
private const val 单字分隔符 = " " | |
private const val EMPTY_STRING = "" | |
private const val INIT_INDEX = 0 | |
fun String.getPronounce(): Set<String> { | |
fun go(arr: List<String>, index: Int, wholePinyin: String, firstChar: String, set: MutableSet<String>) { | |
if (index < arr.size) { | |
arr[index].split(多音字分隔符).forEach { | |
val head = if (it.isNotEmpty()) it[0].toString() else "" | |
go(arr, index + 1, wholePinyin + it, firstChar + head, set) | |
} | |
} else { | |
set.add(wholePinyin) | |
set.add(firstChar) | |
} | |
} | |
val set = mutableSetOf<String>() | |
go(Pinyin.toPinyin(this, 单字分隔符).split(单字分隔符), INIT_INDEX, EMPTY_STRING, EMPTY_STRING, set) | |
return set | |
} | |
object NameDict : PinyinMapDict() { | |
override fun mapping(): Map<String, Array<String>> { | |
val map = HashMap<String, Array<String>>() | |
map.put("\u4E5C", arrayOf("NIE'MIE")) | |
map.put("覃", arrayOf("QIN'TAN")) | |
map.put("翟", arrayOf("ZHAI'DI")) | |
map.put("朴", arrayOf("PAIO'PU")) | |
map.put("阚", arrayOf("KAN'HAN")) | |
map.put("能", arrayOf("NAI'NENG")) | |
map.put("都", arrayOf("DU'DOU")) | |
map.put("秘", arrayOf("BI'MI")) | |
map.put("阿", arrayOf("E'A")) | |
map.put("区", arrayOf("QU'OU")) | |
map.put("繁", arrayOf("FAN'PO")) | |
map.put("隗", arrayOf("WEI'KUI")) | |
map.put("郇", arrayOf("XUN'HUAN")) | |
map.put("黑", arrayOf("HEI'HE")) | |
map.put("盖", arrayOf("GAI'GE")) | |
map.put("查", arrayOf("CHA'ZHA")) | |
map.put("曾", arrayOf("CENG'ZENG")) | |
map.put("解", arrayOf("XIE'JIE")) | |
map.put("缪", arrayOf("MIAO'MOU")) | |
map.put("晟", arrayOf("CHENG'SHENG")) | |
map.put("乐", arrayOf("LE'YUE")) | |
map.put("员", arrayOf("YUAN'YUN")) | |
map.put("仇", arrayOf("CHOU'QIU")) | |
map.put("单", arrayOf("DAN'SHAN")) | |
map.put("单于", arrayOf("CHAN YU")) | |
map.put("万俟", arrayOf("MO QI")) | |
map.put("皇甫", arrayOf("HUANG FU")) | |
map.put("尉迟", arrayOf("YU CHI")) | |
return map | |
} | |
} | |
Pinyin.init(Pinyin.newConfig().with(NameDict)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment