汉字转拼音(pinyin4j)
1、引入依赖
<dependency>
<groupId>pinyin4j.sourceforge.net</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version> </dependency>
2、代码
package net.biocloud.social.management.utils; import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class ChineseToEnglishHelper { private static final Logger LOG = LoggerFactory.getLogger(ChineseToEnglishHelper.class); /**
* 姓名转换为拼音,如胡八一, BaYi Hu
*
* @param realName
* @return
*/
public static String chineseToPinyin(String realName) {
StringBuffer pybf = new StringBuffer();
char[] arr = realName.trim().toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String surname = "";
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
//单个汉字转为拼音
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (i == 0) {
surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length());
} else {
pybf.append(_t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length()));
}
if (i == arr.length - 1) {
pybf.append(" " + surname);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
LOG.info("chinese to english error, this is message" + e.getMessage());
throw new RuntimeException("chinese to english error");
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().trim();
} /**
* 姓名转换为拼音,如胡八一, B Y Hu
*
* @param realName
* @return
*/
public static String chineseToEnglish(String realName) {
StringBuffer pybf = new StringBuffer();
char[] arr = realName.trim().toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String surname = "";
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
//单个汉字转为拼音
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (i == 0) {
surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length());
} else {
pybf.append((arr.length == 2) ? _t[0].substring(0, 1).toUpperCase() :
(i == 1) ? _t[0].substring(0, 1).toUpperCase() + " " : _t[0].substring(0, 1).toUpperCase());
}
if (i == arr.length - 1) {
pybf.append(" " + surname);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
LOG.info("chinese to pinyin error, this is message" + e.getMessage());
throw new RuntimeException("chinese to pinyin error");
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().trim();
} public static void main(String arg[]) {
System.out.println(chineseToPinyin("胡八一"));
System.out.println(chineseToEnglish("胡八一"));
} }
汉字转拼音(pinyin4j)的更多相关文章
- JAVA实现汉字转换为拼音 pinyin4j/JPinyin
在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代 ...
- 汉字转拼音 pinyin4j 字符串 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 汉字转拼音Pinyin4j工具(C#、Java都可用)
C#用法: string pinyin=GetStringPinYin("张三"); //方法如下 public static string GetStringPinYin(str ...
- 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)
转:https://github.com/kimziv/PinYin4Objc 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)(更新到v1.1.1,增加block异步处 ...
- 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快
1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...
- Java通过pinyin4j实现汉字转拼音
碰到个需求,需要按用户名字的首字母来排序.这就需要获取汉字对应的拼音了,突然就想起了pinyin4j这个jar包,于是就开始写了个汉字转拼音的工具类.在此记录一下,方便后续查阅 一.Pom依赖 ...
- 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快
1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...
- Java汉字转拼音
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...
- java实现将汉字转为拼音
有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ...
随机推荐
- pycharm 启动后一直更新index的问题
这个谷歌一下就知道了,stackoveflow上就有几个解决方案,试试哪个好使就可以了. 详情见http://stackoverflow.com/questions/29030682/pycharm- ...
- JavaScript制作时钟特效
需求说明:制作显示年.月.日.星期几并且显示上午(AM)和下午(PM)的 12进制的时钟,具体效果如下所示: 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C// ...
- 【Alpha版本】 第七天 11.15
一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 昨天完成任务 今天完成任务 明天要做任务 问题困难 心得体会 胡泽善 完成我要招聘的招聘详情显示,完成简历填写及显示功能 完成我要应聘的 ...
- 第1个linux驱动___打印"hello world"
为了方便后续的深入,我们在驱动程序中用printk( )函数来打印"hello world",printk( )是内核中自带的函数,专门用于在打印内核信息.在安装驱动模块到内核中的 ...
- shell text process code
shell 命令处理文本: 1. 批量处理该目录下的文件,ls | while read l ; do echo $l ; done > b.txt 2. 批量处理文件的每一行 , cut - ...
- Java 毫秒转换为日期类型、日期转换为毫秒
/毫秒转换为日期 public static void main(String[] args) { DateFormat formatter = new SimpleDateFormat(" ...
- 日志分析 第七章 安装grafana
grafana依赖mysql存储数据,首先需要安装mysql 安装mysql 解压 # groupadd mysql # useradd -s /sbin/nologin -g mysql mysql ...
- QT 的下载地址
http://blog.csdn.net/friendan/article/details/44873347
- RandomAccessFile类
File类只是针对文件本身进行操作,而如果要对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机地读取一个文件中指定位置的数据. //============ ...
- JavaScript学习笔记——BOM_window对象
javascript浏览器对象模型-windwo对象 BOM Browser Object Model window对象 是BOM中所有对象的核心. 一.属性 1.(位置类型-获得浏览器的位置) IE ...