Files
hospital-rescue-app-v2/uni_modules/x-chinesetopinyin-s/utssdk/app-android/index.uts
T
2026-09-24 16:25:22 +08:00

40 lines
1.4 KiB
Plaintext

// https://github.com/promeG/TinyPinyin
import Pinyin from "com.github.promeg.pinyinhelper.Pinyin";
import PinyinHelper from "net.sourceforge.pinyin4j.PinyinHelper";
import HanyuPinyinOutputFormat from 'net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat';
import HanyuPinyinToneType from 'net.sourceforge.pinyin4j.format.HanyuPinyinToneType';
import HanyuPinyinVCharType from 'net.sourceforge.pinyin4j.format.HanyuPinyinVCharType';
import { XuiChineseToPinYinOpts, XuiChineseToPinYinResult } from "../interface.uts"
import { XuiChineseToPinYinFailImpl } from "../unierror.uts"
/** 中文转拼音 */
export function toPinYin(opts : XuiChineseToPinYinOpts){
try {
let c = opts.char;
if (c == '') {
let errorIml = new XuiChineseToPinYinFailImpl(1002)
opts.fail?.(errorIml)
opts.complete?.(null)
console.error('TMUI Error:','参数不能为空')
return;
}
let result = Pinyin.toPinyin(c," ",null) as string;
const fmt = new HanyuPinyinOutputFormat()
fmt.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
fmt.setToneType(HanyuPinyinToneType.WITH_TONE_MARK)
const ok : XuiChineseToPinYinResult = {
detail: result.toLowerCase(),
zhuyin: PinyinHelper.toHanyuPinyinString(c,fmt,' ')
}
opts.success?.(ok)
opts.complete?.(ok)
} catch (error:Error) {
opts.fail?.(new XuiChineseToPinYinFailImpl(1001))
opts.complete?.(null)
console.error('TMUI Error:',error.message)
}
}