来做个小工具:汉字转拼音

  • 2019 年 10 月 8 日
  • 筆記
import com.rnkrsoft.bopomofo4j.Bopomofo4j  import javafx.geometry.Pos  import tornadofx.*    class Bopomofo4jApp : App(Bopomofo4jView::class)  class Bopomofo4jView : View("汉字转拼音") {      val initStr="""          我们中国的汉字  落笔成画留下五千年的历史  让世界都认识  我们中国的汉字  一撇一捺都是故事  跪举火把虔诚像道光  四方田地落谷成仓  古人象形声意辨恶良  魃魈魁鬾魑魅魍魉  bá xiāo kuí jì chī mèi wǎng liǎng  Wu 又双叒叕  Wu yòu shuāng ruò zhuó  Wu 火炎焱燚  Wu huǒ yán yàn yì  Wu 水沝淼㵘  Wu shuǐ zhuǐ miǎo màn  㙓  kuí bǎo  茕茕孑立 沆瀣一气  踽踽独行 醍醐灌顶  jǔ jǔ dú xíng tí hú guàn dǐng  绵绵瓜瓞 奉为圭臬  mián mián guā dié fèng wéi guī niè  龙行龘龘 犄角旮旯  lóng xíng dá dá jī jiǎo gā lá  娉婷袅娜 涕泗滂沱  pīng tíng niǎo nuó tì sì pāng tuó  呶呶不休 不稂不莠  náo náo bù xiū bù láng bù yǒu  卬  áng  咄嗟 蹀躞 耄耋 饕餮  duō jiē dié xiè mào dié tāo tiè  囹圄 蘡薁 觊觎 龃龉  líng yǔ yīng yù jì yú jǔ yǔ  狖轭鼯轩 怙恶不悛  yòu è wú xuān hù è bù quān  其靁虺虺 腌臢孑孓  陟罚臧否 针砭时弊  鳞次栉比 一张一翕  我们中国的汉字  落笔成画留下五千年的历史  让世界都认识  我们中国的汉字  一撇一捺都是故事  现在全世界各地  到处有中国字  黄皮肤的人骄傲地把头抬起  我们中国的汉字  一平一仄谱写成诗  茕茕孑立 沆瀣一气  hàng xiè yī qì  踽踽独行 醍醐灌顶  绵绵瓜瓞 奉为圭臬  龙行龘龘 犄角旮旯  娉婷袅娜 涕泗滂沱  呶呶不休 不稂不莠  咄嗟 蹀躞 耄耋 饕餮  囹圄 蘡薁 觊觎 龃龉  狖轭鼯轩 怙恶不悛  其靁虺虺 腌臢孑孓  qí léi huī huī ā zā jié jué  陟罚臧否 针砭时弊  鳞次栉比 一张一翕  我们中国的汉字  落笔成画留下五千年的历史  让世界都认识  我们中国的汉字  一撇一捺都是故事  现在全世界各地  到处有中国字  黄皮肤的人骄傲地把头抬起  我们中国的汉字  一平一仄谱写成诗  优美旋律自宫商角徵羽  众人皆说成之于语故成语      """.trimIndent()      val hz = stringProperty(initStr)      val py = stringProperty()      val ydType = intProperty(0)      override val root = borderpane {          paddingAll = 10.0          top = hbox(10) {              alignment = Pos.CENTER              paddingBottom=10.0              togglegroup {                  val tg = this                  selectedToggleProperty().onChange {                      ydType.value = tg.selectedToggle.userData as Int                      when (ydType.value) {                          in (0..2) -> {                              hz2py(ydType = ydType.value)                          }                          3 -> runAsync {                              Bopomofo4j.local()                              py.value = Bopomofo4j.cht2chs(hz.value)                          }                          4 -> runAsync {                              Bopomofo4j.local()                              py.value = Bopomofo4j.chs2cht(hz.value)                          }                      }                  }                  radiobutton("声母音调") {                      userData = 0                      isSelected = true                  }                  radiobutton("数字音调") { userData = 1 }                  radiobutton("无音调") { userData = 2 }                  radiobutton("繁体->简体") { userData = 3 }                  radiobutton("简体->繁体") { userData = 4 }              }              button("开始转换") {                  action {                      hz2py(hz.value)                  }              }          }            center = hbox(10) {              vbox(10) {                  label("汉字")                  textarea(hz) {                      prefHeight=700.0                      isWrapText = true                      contextmenu {                          item("转换所有").action {                              hz2py(ydType = ydType.value)                          }                          item("转换选中").action {                              hz2py(selectedText, ydType.value)                          }  //                        item("转换当前行").action {  //                            hz2py(text, ydType.value)  //                        }                      }                  }              }              vbox(10) {                  label("拼音")                  textarea(py) {                      prefHeight=700.0                      isWrapText = true                  }              }          }      }        private fun hz2py(hzstr: String = hz.value, ydType: Int = 0) {          runAsync {              Bopomofo4j.local()              py.value = Bopomofo4j.pinyin(hzstr, ydType, false, false, " ")          }      }  }