Pinyin4j:最流行的汉语转拼音库

QuibblerQuibbler 2020-01-22 约 5 分钟 2669 次阅读

Pinyin4j:最流行的汉语转拼音库

Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制,在项目中经常会遇到需求用户输入汉字后转换为拼音的场景。

官网:http://pinyin4j.sourceforge.net/

下载:https://sourceforge.net/projects/pinyin4j/files/



1、导入Pinyin4j

两种方式导入Pinyin4j库到项目中。

1.1、build.gradle中添加依赖

在项目的build.gradle添加依赖最简单的方式引入Pinyin4j

dependencies {
        implementation 'com.github.open-android:pinyin4j:2.5.0'
       ... ...
    }

别忘了整个project的builder.gradle需要添加maven jitpack.io 仓库

allprojects {
        repositories {
            google()
            jcenter()
            //添加jitpack库
            maven { url 'https://jitpack.io' } 
        }
    }

1.2、导入jar包

另一种导入方式,将下载Pinyin4j的jar包拷贝到Android工程libs/目录下。不推荐这种方式,不如依赖远程仓库便捷一些。

1.3、注意

添加或拷贝完成之后最好同步刷新一下Sync Project with Gradle Files。注意:两者选一即可,不要重复添加依赖,会导致重复冲突。出现这种情况,移除一种,rebuild一下即可解决。



2、使用Pinyin4j

可以直接在项目中使用了,核心的工具类是PinyinHelper,里面提供了一些static方法直接调用。

String[] pinyinStringArray = PinyinHelper.toTongyongPinyinStringArray('屉');

上面返回String[]数组的结果是[ti4],表示"屉"的拼音是ti,第4声

上面的格式似乎不太友好,用HanyuPinyinOutputFormat格式化拼音

//指定Pinyin格式转换
    HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();

①设置拼音大小写

// UPPERCASE:大写  (ZHONG)
    // LOWERCASE:小写  (zhong)
    
    //拼音大小写
    hanyuPinyinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

②设置音标是数字还是直接标注在拼音字母上

// WITHOUT_TONE:无音标  (zhong)
    // WITH_TONE_NUMBER:1-4数字表示音标  (zhong4)
    // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常)  (zhòng)
    
    //拼音音标
    hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);

③设置字符样式

// WITH_V:用v表示ü  (nv)
    // WITH_U_AND_COLON:用"u:"表示ü  (nu:)
    // WITH_U_UNICODE:直接用ü (nü
    
      
    //拼音字符样式
    hanyuPinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);

最后使用方法toHanyuPinyinStringArray转拼音设定指定拼音格式:

String[] pinyinStringArray = PinyinHelper.toHanyuPinyinStringArray('屉', hanyuPinyinOutputFormat);

上面的方法会可能会抛出BadHanyuPinyinOutputFormatCombination受查异常,所以需要try-catch

输出结果:tì

相关推荐

Airbnb开源项目
精选开源

Airbnb开源项目

Airbnb Engineering & Data ScienceAirflow Use Apache Airflow (incubating) to author workflows as directed acyclic graphs (DAGs) of tasks12,263Airpal Web UI for PrestoDB2,502Aerosolve A machine learning

2.3k
WilliamChart:轻量美观的 Android 图表库实战
精选开源

WilliamChart:轻量美观的 Android 图表库实战

WilliamChart:轻量美观的 Android 图表库实战数据可视化是运动、健康、金融、统计类 App 的刚需。MPAndroidChart 功能最全但偏重复杂,WilliamChart 走的则是"轻量 + 美观 + Kotlin 原生"路线——v3 用 Kotlin 完全重写,API 极简,一行 chart.animate(dataSet) 就能把数据画成带动画的折线/柱状/环形图,开箱即

175
sherpa解析:开源语音技术全家桶
精选开源

sherpa解析:开源语音技术全家桶

想在手机、树莓派甚至 RISC-V 开发板上离线跑语音识别,五年前还是个需要啃 Kaldi 源码的硬核课题。k2-fsa 组织的 sherpa 把这件事变成了"下载预训练模型、装个包、跑示例"的三步操作。这个以 Apache-2.0 协议开源的项目自我定位是"新一代 Kaldi 的语音转文本框架",它专注端到端模型的推理部署:transducer 与 CTC 两类架构,C++ 与 Python 双…

44