Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱
MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

目录

介绍

maven地址

文档

GitHub上的一个封装

pinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,其提供的 PinyinHelper 这个静态类对外提供拼音转换的服务,主要用到以下两个方法:

static public String[] toHanyuPinyinStringArray(char ch) //将char(必须为汉字单字)转化为拼音,如果ch为非汉字,返回null
static public String[] toHanyuPinyinStringArray(char ch,HanyuPinyinOutputFormat outputFormat) //可以设置输出的格式

测试

将字符转为拼音数组

char c='乾';
System.out.println(Arrays.toString(PinyinHelper.toHanyuPinyinStringArray(c)));//[qian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toGwoyeuRomatzyhStringArray(c)));//[chyan, gan]
System.out.println(Arrays.toString(PinyinHelper.toMPS2PinyinStringArray(c)));//[chian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toTongyongPinyinStringArray(c)));//[cian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toWadeGilesPinyinStringArray(c)));//[ch`ien2, kan1]
System.out.println(Arrays.toString(PinyinHelper.toYalePinyinStringArray(c)));//[chyan2, gan1]

对于 乾 和 重 的拼音转换,以上方法分别得到的结果是:

汉语拼音:[qian2, gan1],[zhong4, chong2]
国语罗马字:[chyan, gan],[jonq, chorng]
注音符号拼音:[chian2, gan1],[jung4, chung2]
通用拼音:[cian2, gan1],[jhong4, chong2]
威妥玛拼音:[ch`ien2, kan1],[chung4, ch`ung2]
耶魯拼音:[chyan2, gan1],[jung4, chung2]

拼音输出格式设置

HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
System.out.println(Arrays.toString(PinyinHelper.toHanyuPinyinStringArray(c, format)));

设置大小写,默认 LOWERCASE

format.setCaseType(HanyuPinyinCaseType.UPPERCASE);//大小写,默认 LOWERCASE

设置音调的样式:数字WITH_TONE_NUMBER,声调符WITH_TONE_MARK,无声调。默认 WITH_TONE_NUMBER

format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//音调的样式,默认 WITH_TONE_NUMBER
//[QIAN2, GAN1],[QIÁN, GĀN],[QIAN, GAN]

符合 V 的输出格式,使用U且带冒号WITH_U_AND_COLON,使用U且上面带雨点WITH_U_UNICODE,使用V符合WITH_V,默认 WITH_U_AND_COLON

format.setVCharType(HanyuPinyinVCharType.WITH_V);//符合 V 的输出格式,默认 WITH_U_AND_COLON
//[LU:, LU],[LÜ, LU],[LV, LU]

字符串转拼音工具类

System.out.println(PinYinUtils.toPinYin("白乾涛"));//Bai2Qian2Tao1
System.out.println(PinYinUtils.getFirstPinYin("白乾涛"));//B
public class PinYinUtils {

    //获取字符串首个字符转为拼音后的首个字母的大写形式
public static String getFirstPinYin(String content) {
if (content == null || content.trim().length() == 0) {
return "#";
} else {
char firstChar = content.trim().charAt(0);//取字符串首个字符
if (firstChar >= 'A' && firstChar <= 'Z') { //如果是大写字母,直接返回
return firstChar + "";
} else if (firstChar >= 'a' && firstChar <= 'z') { //如果是小写字母,转为大写后返回
return (firstChar + "").toUpperCase();
} else {
String[] array = PinyinHelper.toHanyuPinyinStringArray(firstChar);
return array == null || array.length == 0 || array[0] == null || array[0].length() == 0 ? "#" : (array[0].charAt(0) + "").toUpperCase();
}
}
} public static String toPinYin(String content) {
return toPinYin(content, "", true, null);
} /**
* 将content转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
* 如: 明天 转换成 MINGTIAN
*
* @param content:要转化的汉字
* @param spera:转化结果的分割符
* @param firstUpperCase:是否首字母大写
* @param format:格式封装类
*/
public static String toPinYin(String content, String spera, boolean firstUpperCase, HanyuPinyinOutputFormat format) {
if (content == null || content.trim().length() == 0) {
return "";
}
if (spera == null) {
spera = "";
}
if (format == null) {
format = new HanyuPinyinOutputFormat();
} StringBuilder pyBuilder = new StringBuilder();
String temp;
String[] pyArray = null;
for (int i = 0; i < content.length(); i++) {
char c = content.charAt(i);
if ((int) c <= 128) {
pyBuilder.append(c);
} else {
try {
pyArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
if (pyArray == null) {
pyBuilder.append(c);
} else {
temp = pyArray[0];
if (firstUpperCase) {
temp = pyArray[0].toUpperCase().charAt(0) + temp.substring(1);
}
pyBuilder.append(temp).append(i == content.length() - 1 ? "" : spera);
}
}
}
return pyBuilder.toString().trim();
}
}

2018-7-2

汉字转拼音 pinyin4j 字符串 MD的更多相关文章

  1. JAVA实现汉字转换为拼音 pinyin4j/JPinyin

    在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代 ...

  2. 汉字转拼音Pinyin4j工具(C#、Java都可用)

    C#用法: string pinyin=GetStringPinYin("张三"); //方法如下 public static string GetStringPinYin(str ...

  3. java实现将汉字转为拼音

    有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ...

  4. 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母

    通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心    ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...

  5. Java通过pinyin4j实现汉字转拼音

       碰到个需求,需要按用户名字的首字母来排序.这就需要获取汉字对应的拼音了,突然就想起了pinyin4j这个jar包,于是就开始写了个汉字转拼音的工具类.在此记录一下,方便后续查阅 一.Pom依赖 ...

  6. 汉字转拼音(pinyin4j)

    1.引入依赖 <dependency> <groupId>pinyin4j.sourceforge.net</groupId> <artifactId> ...

  7. 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)

    转:https://github.com/kimziv/PinYin4Objc 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)(更新到v1.1.1,增加block异步处 ...

  8. 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快

    1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...

  9. 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快

    1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...

随机推荐

  1. QT学习笔记9:QTableWidget的用法总结

    最近用QT中表格用的比较多,使用的是QTableWidget这个控件,总结一下QTableWidget的一些相关函数. 1.将表格变为禁止编辑: tableWidget->setEditTrig ...

  2. 【BZOJ-2864】战火星空 计算几何 + 最大流

    2864: 战火星空 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 33  Solved: 14[Submit][Status][Discuss] D ...

  3. Educational Codeforces Round 14 B. s-palindrome 水题

    B. s-palindrome 题目连接: http://www.codeforces.com/contest/691/problem/B Description Let's call a strin ...

  4. Linux __attribute__(("hidden"))、default

    记录下: Linux下导出so库接口时在下面情况下无法导出(编译时增加了__attribute__(("hidden"))属性). void * __attribute__((&q ...

  5. j.u.c系列(11)---之并发工具类:Exchanger

    写在前面 前面三篇博客分别介绍了CyclicBarrier.CountDownLatch.Semaphore,现在介绍并发工具类中的最后一个Exchange.Exchange是最简单的也是最复杂的,简 ...

  6. 阻止新的csproj工程的dll引用继承

    VisualStudio传统的csproj工程中,引用是没有继承功能的.例如,对于如下一个引用关系 App引用Assembly 1 Assembly 1引用Assembly 2 程序App在没有添加A ...

  7. 使用Oracle DBLink进行数据库之间对象的訪问操作

    Oracle中自带了DBLink功能,它的作用是将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中能够操作还有一个数据库中的对象,比如我们新建了一个数据database1.我们须要操 ...

  8. CefSharp 在同一窗口打开链接的方法

    摘要 在winform中使用cefsharp的时候,我们在浏览网页的时候,想在同一个窗口打开链接,而不是创建新的窗口.可以通过下面的方法实现. 解决方案 CefSharp 中控制弹窗的接口是 ILif ...

  9. Delphi XE2 compiler performance

    原文: http://blog.barrkel.com/2011/10/delphi-xe2-compiler-performance.html Delphi XE2 compiler perform ...

  10. 分析iOS Crash文件,使用命令符号化iOS Crash文件

    TBMainClient.ipa改名为TBMainClient.zip并解压得到TBMainClient.app 然后将TBMainClient.app      TBMainClient.app.d ...