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

最新文章

  1. HDFS中JAVA API的使用
  2. NAT技术
  3. bsp STEP
  4. 快乐的JS正则表达式(二)
  5. Bootstrap Table使用分享
  6. 将博客搬至CSDN(放弃)
  7. (转)oracle 查看表所占用的空间大小
  8. C#相关时间DateTime格式化
  9. Android的Handler总结
  10. ranlib的作用 -----更新静态库的符号索引表
  11. CSS3学习系列之盒样式(一)
  12. shell与export命令
  13. 42.Odoo产品分析 (四) – 工具板块(10) – 问卷(2)
  14. 神经网络之dropout层
  15. Alpha(5/10)
  16. weblogic CVE-2018-2628漏洞利用工具
  17. 飞冰ICE
  18. Kubernetes Service
  19. js动态加载图片核心代码
  20. 全网最详细的Git学习系列之介绍各个Git图形客户端(Windows、Linux、Mac系统皆适用ing)(图文详解)

热门文章

  1. Unity3D导入MAX文件的一些问题(zz)
  2. android 的安全问题
  3. 「BZOJ 3645」小朋友与二叉树
  4. BZOJ4541 [Hnoi2016]矿区
  5. Nginx增加模块
  6. oracle 根据约束名查表名
  7. 使用 IntraWeb (21) - 基本控件之 TIWTabControl
  8. LabTool : LPC LINK2, LPC4370 cheap scope: 80Ms/s 12 bit
  9. TCP选项之SO_RCVBUF和SO_SNDBUF
  10. php简单浏览目录内容