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

第一个是使用pinyin4j的jar,此jar对多音字语句的处理不太理想

package com.lovo.utils;

import org.springframework.stereotype.Component;

import net.sourceforge.pinyin4j.PinyinHelper;

import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;

import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;

import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**

* pinyin4j汉字转拼音工具类

* @author zhiheng

*

*/

@Component

public class ChangeToPinYin {

//pinyin4j格式类

private HanyuPinyinOutputFormat format = null;

//拼音字符串数组

private String[]pinyin;

//通过构造方法进行初始化

public ChangeToPinYin(){

format = new HanyuPinyinOutputFormat();

/*

* 设置需要转换的拼音格式

* 以天为例

* HanyuPinyinToneType.WITHOUT_TONE 转换为tian

* HanyuPinyinToneType.WITH_TONE_MARK 转换为tian1

* HanyuPinyinVCharType.WITH_U_UNICODE 转换为tiān

*

*/

format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

pinyin = null;

}

/**

* 对单个字进行转换

* @param pinYinStr 需转换的汉字字符串

* @return 拼音字符串数组

*/

public String getCharPinYin(char pinYinStr){

try

{

//执行转换

pinyin = PinyinHelper.toHanyuPinyinStringArray(pinYinStr, format);

} catch (BadHanyuPinyinOutputFormatCombination e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

//pinyin4j规则,当转换的符串不是汉字,就返回null

if(pinyin == null){

return null;

}

//多音字会返回一个多音字拼音的数组,pinyiin4j并不能有效判断该字的读音

return pinyin[0];

}

/**

* 对单个字进行转换

* @param pinYinStr

* @return

*/

public String getStringPinYin(String pinYinStr){

StringBuffer sb = new StringBuffer();

String tempStr = null;

//循环字符串

for(int i = 0; i

{

tempStr = this.getCharPinYin(pinYinStr.charAt(i));

if(tempStr == null)

{

//非汉字直接拼接

sb.append(pinYinStr.charAt(i));

}

else

{

sb.append(tempStr);

}

}

return sb.toString();

}

}

测试

import javax.annotation.Resource;

import org.junit.Ignore;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.lovo.utils.ChangeToPinYin;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"classpath:applicationContext.xml"})

public class ToPinYinTest {

@Resource

private ChangeToPinYin changeToPinYin;

@Test

public void changePinYinTest(){

String str = "你在做什么?what are you nong sa lie?";

System.out.println(changeToPinYin.getStringPinYin(str));

}

@Ignore

public void changechar(){

char c = '你';

System.out.println(changeToPinYin.getCharPinYin(c));

}

}

测试结果

image.png

第二个方法使用JPinyin,说是在pinyin4j的jar上进行了优化,可以实现汉字转换为拼音,并自动识别常用多音字,还支持简体转换为繁体,检查是否为简体,是否为繁体,是否为中文字符等功能,下面一段代码简单列举了下汉字转换拼音及简体转换繁体

package com.lovo.utils;

import opensource.jpinyin.ChineseHelper;

import opensource.jpinyin.PinyinFormat;

import opensource.jpinyin.PinyinHelper;

import org.springframework.stereotype.Component;

@Component

public class ChangeToPinYinJP {

/**

* 转换为有声调的拼音字符串

* @param pinYinStr 汉字

* @return 有声调的拼音字符串

*/

public String changeToMarkPinYin(String pinYinStr){

String tempStr = null;

try

{

tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

/**

* 转换为数字声调字符串

* @param pinYinStr 需转换的汉字

* @return 转换完成的拼音字符串

*/

public String changeToNumberPinYin(String pinYinStr){

String tempStr = null;

try

{

tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

/**

* 转换为不带音调的拼音字符串

* @param pinYinStr 需转换的汉字

* @return 拼音字符串

*/

public String changeToTonePinYin(String pinYinStr){

String tempStr = null;

try

{

tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITHOUT_TONE);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

/**

* 转换为每个汉字对应拼音首字母字符串

* @param pinYinStr 需转换的汉字

* @return 拼音字符串

*/

public String changeToGetShortPinYin(String pinYinStr){

String tempStr = null;

try

{

tempStr = PinyinHelper.getShortPinyin(pinYinStr);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

/**

* 检查汉字是否为多音字

* @param pinYinStr 需检查的汉字

* @return true 多音字,false 不是多音字

*/

public boolean checkPinYin(char pinYinStr){

boolean check = false;

try

{

check = PinyinHelper.hasMultiPinyin(pinYinStr);

} catch (Exception e) {

e.printStackTrace();

}

return check;

}

/**

* 简体转换为繁体

* @param pinYinStr

* @return

*/

public String changeToTraditional(String pinYinStr){

String tempStr = null;

try

{

tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

/**

* 繁体转换为简体

* @param pinYinSt

* @return

*/

public String changeToSimplified(String pinYinSt){

String tempStr = null;

try

{

tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);

} catch (Exception e)

{

e.printStackTrace();

}

return tempStr;

}

// public static void main(String[] args) {

// String str = "重慶 most input";

// ChangeToPinYinJP jp = new ChangeToPinYinJP();

// System.out.println(jp.changeToSimplified(str));

// System.out.println(jp.checkPinYin('重'));

// }

}

拼音转换jar还有很多其他的功能,对项目实际是很有帮助的,这里只是简单的介绍了下最基本的功能,有兴趣的可以自行去了解。

java 拼音_JAVA实现汉字转换为拼音 pinyin4j/JPinyin相关推荐

  1. java字符串转换为拼音_JAVA实现汉字转换为拼音 pinyin4j/JPinyin

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

  2. java把汉字转换成拼音_Java实现汉字转换为拼音

    本文的核心代码取自easydozer的blog:http://blog.csdn.net/easydozer/ 代码说明: Java实现汉字转换为拼音的GUI版本. GUI代码部分: /** * @( ...

  3. java 实现汉字转换拼音_Java实现汉字转换为拼音

    # re: Java实现汉字转换为拼音 2006-11-24 15:06 芦苇 JAVA将汉字转化成拼音的方法 /** *//** ################################## ...

  4. java 中文转成_Java实现汉字转换为拼音 [转]

    代码说明: Java实现汉字转换为拼音的GUI版本. GUI代码部分: /** * @(#)CnToSpellGUI.java * kindani * 2004-10-25?? * */ import ...

  5. java 判断汉字音调_JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin

    JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin 使用JPinyin,可以实现汉字转换为拼音,并自动识别常用多音字,还支持简体转换为繁体,检查是否为简体,是否为繁体,是否为中文字符等功能 ...

  6. java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例

    JAVA中汉字转拼音的方法并不复杂,可以使用pinyin4j包来实现. 一.下载pinyin4j的架包,并导入项目中,如下: 如果是maven项目,maven依赖如下: com.belerweb pi ...

  7. java将汉字转成拼音首字母大写字母_Java 将汉字转换为拼音并取首字母大写

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先需要引入pinyin4j-2.5.0.jar 在定义一个servlet.Java的类,写一个Converting方法 实例代码详解如下: public ...

  8. java 中文转首字母_Java 将汉字转换为拼音并取首字母大写

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先需要引入pinyin4j-2.5.0.jar 在定义一个servlet.Java的类,写一个Converting方法 实例代码详解如下: public ...

  9. java中文名转成大写字母_Java 将汉字转换为拼音并取首字母大写

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先需要引入pinyin4j-2.5.0.jar 在定义一个servlet.Java的类,写一个Converting方法 实例代码详解如下: public ...

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

    转载自  JAVA实现汉字转换为拼音 pinyin4j/JPinyin 在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个 ...

最新文章

  1. webmagic 获取文本_WebMagic Selectable抽取元素
  2. 全栈工程师--这才是真正的从入门到跑路
  3. CodeForces - 1516D Cut(思维+倍增)
  4. c语言求e近似值精度在10e6,中石油2013秋季学期《C语言》补考在线适用于2014年4月...
  5. linux chown
  6. tp5可以请求到linux根目录么,TP5 获取项目根目录路径
  7. python横向输出字符串_Python字符串拼接和格式化输出
  8. Linux 完全卸载 MySQL
  9. WIN7无法卸载掉中文繁体注音输入法
  10. golang 实现微信聊天机器人
  11. CSS 特异度、继承、求值过程简介
  12. 传化智联如何拿下第248张第三方支付牌照
  13. 912. 排序数组(中等 各种排序 数组)
  14. 解决鼠标右键特别慢的方法
  15. Opencv识别面部
  16. 自认为最中肯的“北大”评价吧(转)
  17. 801冠号大全及桃花荧光
  18. DXC Technology将收购领先数字创新公司Luxoft
  19. python3学习笔记-元祖tupe
  20. Android日志收集

热门文章

  1. [项目管理]-第四章:过程定义和过程裁剪
  2. 动画:用动画给面试官解释 TCP 三次握手过程
  3. linux脚本每月1日跑一次,Linux crontab 每分钟、每小时、每天、每周、每月、每年定时执行...
  4. 苹果CMSv10系统标签,仿站必备
  5. 笔记本电脑BIOS和硬盘加密密码设置方法
  6. 电动汽车对系统运行的影响(Matlab实现)
  7. 《非暴力沟通》—— 马歇尔·卢森堡博士 读后摘录总结
  8. flutter中状态栏高度等信息
  9. 生物信息学分析选用的服务器,蛋白质与蛋白质组分析生物信息学
  10. 电脑磁盘分区数据丢失怎么办 磁盘分区丢失的数据怎么恢复