转载请注明出处: http://blog.csdn.net/xiaojimanman/article/details/48579073

http://www.llwjy.com/blogdetail/e669927a50da5c3a8f2297718614109a.html

个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~

-------------------------------------------------------------------------------------------------

一、问题描述

汉字转化为对应的拼音或者获取汉字拼音的首字母,这些都是在开发中经常遇到的问题,在获取汉字的拼音或者拼音的首字母之后,我们在推荐或者搜索部门可以很大程度提高用户的体验,比如用户输入“NH”,我们就可以联想出“你好”、“你会”、“年后”、“内涵”等词语。在Java中,pinyin4j.jar这个工具很好实现了将汉字转化为对应的拼音,下面我们就介绍下如何使用这个jar包。

二、资源下载

下载地址点击这里,下载之后解压,直接使用文件中的pinyin4j-2.5.0.jar即可。

三、提供方法

我们可以使用HanyuPinyinOutputFormat类来设置拼音的返回方式,比如设置拼音的大小写、音标方式以及拼音ü的显示形式,具体如下图:

直接使用PinyinHelper中的方法来对汉字做对应的转化,具体有如下三种,三种效果如何自己做下测试即可:

四、编写代码

针对我们平常可能用到的功能,我做了如下的封装,提供的功能还有具体的实现步骤参照代码中的注释:

 /**  *@Description: 将汉语转化为拼音    */
package com.lulei.util;  import java.util.ArrayList;
import java.util.List;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.HanyuPinyinVCharType;public class PinYinUtil {private static HanyuPinyinOutputFormat format = null;static {format = new HanyuPinyinOutputFormat();//拼音小写format.setCaseType(HanyuPinyinCaseType.LOWERCASE);//无音标方式;WITH_TONE_NUMBER:1-4数字表示英标;WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//用v表示üformat.setVCharType(HanyuPinyinVCharType.WITH_V);}/*** @param str* @return* @Author:lulei  * @Description: 返回字符串的拼音*/public static String[] getCharPinYinString(String str) {if (str == null || str.length() < 1) {return null;}List<String> result = new ArrayList<String>();//对字符串中的记录逐个分析for (int i = 0; i < str.length(); i++) {result = getCharPinYinString(str.charAt(i), result);}return result.toArray(new String[result.size()]);}/*** @param c* @param list* @return* @Author:lulei  * @Description: 将字符c的拼音拼接到list中的记录中*/private static List<String> getCharPinYinString(char c, List<String> list) {String[] strs = getCharPinYinString(c);List<String> result = new ArrayList<String>();//如果解析出的拼音为空,判断字符C是否为英文字母,如果是英文字母则添加值拼音结果中if (strs == null) {if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {c = c <= 91 ? (char)(c + 32) : c;if (list == null || list.size() == 0) {result.add(c + "");} else {for (String s : list) {result.add(s + c);}}return result;}return list;}//将字符C的拼音首和已存在的拼音首组合成新的记录for (String str : strs) {if (list == null || list.size() == 0) {result.add(str);} else {for (String s : list) {result.add(s + str);}}}return result;}/*** @param c* @return* @Author:lulei  * @Description: 返回汉字的拼音*/public static String[] getCharPinYinString(char c) {try {//返回字符C的拼音return PinyinHelper.toHanyuPinyinStringArray(c, format);} catch (Exception e) {e.printStackTrace();}return null;}/*** @param str* @return* @Author:lulei  * @Description: 返回字符串的拼音的首字母*/public static String[] getCharPinYinChar(String str) {if (str == null || str.length() < 1) {return null;}List<String> result = new ArrayList<String>();//对字符串中的记录逐个分析for (int i = 0; i < str.length(); i++) {result = getCharPinYinChar(str.charAt(i), result);}return result.toArray(new String[result.size()]);}/*** @param c* @param list* @return* @Author:lulei  * @Description: 将字符c的拼音首字母拼接到list中的记录中*/private static List<String> getCharPinYinChar(char c, List<String> list) {char[] chars = getCharPinYinChar(c);List<String> result = new ArrayList<String>();//如果解析出的拼音为空,判断字符C是否为英文字母,如果是英文字母则添加值拼音结果中if (chars == null) {if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {c = c < 91 ? (char)(c + 32) : c;if (list == null || list.size() == 0) {result.add(c + "");} else {for (String s : list) {result.add(s + c);}}return result;}return list;}//将字符C的拼音首字母和已存在的拼音首字母组合成新的记录for (char ch : chars) {if (list == null || list.size() == 0) {result.add(ch + "");} else {for (String s : list) {result.add(s + ch);}}}return result;}/*** @param c* @return* @Author:lulei  * @Description:返回汉字拼音首字母*/public static char[] getCharPinYinChar(char c) {//字符C的拼音String[] strs = getCharPinYinString(c);if (strs != null) {//截取拼音的首字母char[] chars = new char[strs.length];for(int i = 0; i <chars.length; i++) {chars[i] = strs[i].charAt(0);}return chars;}return null;}public static void main(String[] args) {// TODO Auto-generated method stub  char c = "重庆".charAt(0);String[] str = PinYinUtil.getCharPinYinString(c);for(String s : str) {System.out.println(s);}char[] chars = PinYinUtil.getCharPinYinChar(c);for(char c1 : chars) {System.out.println(c1);}str = PinYinUtil.getCharPinYinString("重庆c");for(String s : str) {System.out.println(s);}str = PinYinUtil.getCharPinYinChar("重庆a");for(String s : str) {System.out.println(s);}}}

五、输出结果

-------------------------------------------------------------------------------------------------
小福利
-------------------------------------------------------------------------------------------------
      个人在极客学院上《Lucene案例开发》课程已经上线了(目前上线到第二课),欢迎大家吐槽~

第一课:Lucene概述

第二课:Lucene 常用功能介绍

第三课:网络爬虫

第四课:数据库连接池

第五课:小说网站的采集

java实现汉字转拼音相关推荐

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

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

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

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

  3. java实现汉字转为拼音

    java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...

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

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

  5. java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体

    java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体 一.前言 java实现汉字转拼音,我的思路是需要一个字符和拼音的映射库."我"=wo,"们&qu ...

  6. 【Java】汉字转拼音

    [Java]汉字转拼音 将汉字转成拼音及汉字首字母,可以使用jar包 pingyin4j,但是遇到多音节汉字就会有问题.如果使用大名鼎鼎的jpinyin,可以自动识别常见多音字,而且还支持简体转换为繁 ...

  7. Java pinyin4j 汉字转拼音包括——多音字

    Java汉字转拼音(包括多音字) 有个需求需要把汉字转拼音,我的小伙伴推荐用Unicode官方的包:下载有些慢. 实际中用了Java工具包:pinyin4j解决 可以转汉字,多音字,多音字的地方要求不 ...

  8. Java将汉字转为拼音

    汉字转换成拼音 : 首先jar:pinyin4j-2.5.0.jar 或: <dependency><groupId>com.belerweb</groupId>& ...

  9. 【java之汉字转拼音】

    一.JPinyin介绍 JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPinyin主要特性] 1.准确.完善的字库: Unicode编码从4E00 ...

  10. Java中汉字转拼音pinyin4j的用法

    pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库: 依赖jar包导入 <!-- pinyin4j 汉语转拼音 --><dependency><g ...

最新文章

  1. 28 模态框拖动案例
  2. 1.7 Java到底有没有多维数组?
  3. 微信有电脑客户端吗_一个小程序,就能让你用手机控制电脑~
  4. 企业怎样做好计算机应急响应工作
  5. 体验最火的敏捷——SCRUM(厦门,2014.1.4)
  6. java检查危险品程序_危险品检查java程序
  7. Ubuntu系统强制关闭程序
  8. mysql 字节流_字节流至缓冲流
  9. IE游览器的扩展事件
  10. android 9.0 开机动画,小米9开机动画安装器
  11. 后台管理系统PRD该怎么写?
  12. 网页缩放与窗口缩放_缩放—对您的隐私有多严重?
  13. 网络技术人员要知道的100个安全工具
  14. 索尼计算机bios正确设置,索尼vaio笔记本如何进入bios设置_索尼笔记本进入bios图解...
  15. 计算机中year函数怎么使用,excel2010中YEAR函数的使用方法
  16. 经纬度数据计算-JavaScript
  17. 新疆伊犁山开挖破裂机液压岩石劈裂棒 大型岩石分裂棒行业推荐
  18. JS--input不可编辑
  19. 华为智慧屏x1是鸿蒙系统吗,荣耀智慧屏x1和华为智慧屏s55有什么区别?哪个值得买...
  20. selenium教程(2)CSS元素操作

热门文章

  1. python requests post 中文结果请求得到unicode
  2. 深度解读:如何评估软件测试工作的价值?
  3. 网络互连与互联网 - 路由信息协议(RIP)
  4. 移动平台3G手机网站前端开发布局技巧汇总
  5. OpenKruise v0
  6. 力扣第八题 myatoi
  7. “刷脸出入” 人脸识别门禁强化出入安全
  8. markdown换行功能
  9. 【部署】NIDS之SNORT部署
  10. 【CVPR2018】物体检测中的结构推理网络