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

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

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

1.8k
OkHttp线程池和连接池
开源

OkHttp线程池和连接池

OkHttp线程池和连接池了解了OkHttp的网络请求流程以及拦截器实现原理,再关注OkHttp中两个重要的:OkHttp的线程池和连接池。1、OkHttp线程池在OkHttp网络请求流程一文中,我们分析了OkHttp异步和同步请求流程。请求最后都在Dispatcher中分发调度处理,最后被ExecutorService执行。1.1、DispatcherDispatcher中执行任务的执行器是ex

5.2k
优美的开源动效库:Lottie
开源

优美的开源动效库:Lottie

优美的开源动效库:Lottie1、强大的动效LottieLottie是一个适用于Android,iOS,Web和Windows的库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并在移动设备和Web上原生渲染它们!GitHub:https://github.com/airbnb/lottie-androidLottie官网:http://airbn

4.3k