汉字转拼音(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方法中测 ...
随机推荐
- HTML5学习总结-03 地理定位
一 地理定位 HTML5 Geolocation(地理定位)用于定位用户的位置. 1 地理定位 地理位置 经度 : 南北极的连接线 纬度 : 东西连接的线 位置信息从何而来: IP地址 G ...
- 【项目】UICollectionView 对象自定
陈述一下简单流程: 1.首先定义:UICollectionViewFlowLayout 2.初始化UICollectionView 3.注册复用的cell,定义她们的reuseIndefinite 4 ...
- 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...
- python和numpy的版本、安装位置
命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- DataView
表示用于排序.筛选.搜索.编辑和导航的 DataTable 的可绑定数据的自定义视图. DataView的功能类似于数据库的视图,他是数据源DataTable的封装对象,可以对数据源进行排序.搜索.过 ...
- easyUI学习笔记之tab组件的鼠标事件
一.鼠标经过组件后的事件,自动打开选项卡内容 var tabs = $('#tt').tabs().tabs('tabs'); for(var i=0; i<tabs.length; i++){ ...
- angularjs笔记(三)
AngularJS API 7.其他一些常用指令,布尔类型的指令也可以用表达式 (1).数组索引$index <!DOCTYPE html> <html> <head&g ...
- Runner站立会议01
开会时间:9.10-9.30 地点:二教 今天做了什么:学了文本输入,button按钮,界面转换(意图) 遇到什么困难:界面转换时,出现问题,没有正常跳转 明天打所作什么:解决今天遇到的问题,学了第二 ...
- 一个 Sql语句优化的问题- STATISTICS 统计信息
前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...