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)的更多相关文章

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

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

  2. 汉字转拼音 pinyin4j 字符串 MD

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

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

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

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

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

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

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

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

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

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

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

  8. Java汉字转拼音

    import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...

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

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

随机推荐

  1. hdu 2014 青年歌手大奖赛_评委会打分

    题意: 输入N个数,去掉最大和最小的数,求剩余的数的平均数. 解法: 找到分别最大和最小的数,然后从总和中减去他们,再求平均数(不要排序): 1: #include<stdlib.h> 2 ...

  2. JS-DOM2级事件对象跨浏览器处理(已封装)

    var eventUill = { //添加事件 addHander: function(element, type, handler) { if(element.addEventListener) ...

  3. BigDecimal 类型数据的一些应用

    1.比较大小 可以通过BigDecimal的compareTo方法来进行比较.返回的结果是int类型,-1表示小于,0是等于,1是大于. 例如: if(a.compareTo(b) == -1){ a ...

  4. 签名有元程序集 Signed Friend Assemblies

    下面的例子演示了创建签名程序集和有元程序集.这就要求两个程序集都是强命名,在下面的例子中,两个程序集都用了同一个秘钥,也可以用不同的秘钥. 1. 生成秘钥, 这个在前面的博客中有说明,生成秘钥文件sn ...

  5. nginx主备配置

    添加配置: proxy_next_upstream error timeout invalid_header http_500 http_503 http_502; upstream http.wea ...

  6. SVM松弛变量-记录毕业论文3

    上一篇博客讨论了高维映射和核函数,也通过例子说明了将特征向量映射到高维空间中可以使其线性可分.然而,很多情况下的高维映射并不能保证线性可分,这时就可以通过加入松弛变量放松约束条件.同样这次的记录仍然通 ...

  7. 10月21日上午MySQL数据库学习内容复习

    1.创建数据库create database 数据库名称删除数据库drop database 数据库名称 2.创建表create table 表名(列名 类型(长度) 自增长 主键 非空,)自增长:a ...

  8. 用javascript替换URL中的参数值

    <script> function changeUrlArg(url, arg, val){ var pattern = arg+'=([^&]*)'; var replaceTe ...

  9. css中的px、em、rem 详解

    概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时 ...

  10. Log4cpp配置文件格式说明

    Log4cpp配置文件格式说明 博客分类: log4cpp log4cpp  log4cpp有3个主要的组件:categories(类别).appenders(附加目的地).和 layouts(布局) ...