pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字)

pinyin4j官方网址:http://pinyin4j.sourceforge.net/

import java.util.HashSet;

import java.util.Set;

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;

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

public class pinyin4j {

/**

* 字符串集合转换字符串(逗号分隔)

* @author wyh

* @param stringSet

* @return

*/

public static String makeStringByStringSet(Set stringSet){

StringBuilder str = new StringBuilder();

int i=0;

for(String s : stringSet){

if(i == stringSet.size() - 1){

str.append(s);

}else{

str.append(s + ",");

}

i++;

}

return str.toString().toLowerCase();

}

/**

* 获取拼音集合

* @author wyh

* @param src

* @return Set

*/

public static Set getPinyin(String src){

if(src!=null && !src.trim().equalsIgnoreCase("")){

char[] srcChar ;

srcChar=src.toCharArray();

//汉语拼音格式输出类

HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();

//输出设置,大小写,音标方式等

hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE)

hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);

String[][] temp = new String[src.length()][];

for(int i=0;i

char c = srcChar[i];

//是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)

if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){

try{

temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);

}catch(BadHanyuPinyinOutputFormatCombination e) {

e.printStackTrace();

}

}else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){

temp[i] = new String[]{String.valueOf(srcChar[i])};

}else{

temp[i] = new String[]{""};

}

}

String[] pingyinArray = Exchange(temp);

Set pinyinSet = new HashSet();

for(int i=0;i

pinyinSet.add(pingyinArray[i]);

}

return pinyinSet;

}

return null;

}

/**

* 递归

* @author wyh

* @param strJaggedArray

* @return

*/

public static String[] Exchange(String[][] strJaggedArray){

String[][] temp = DoExchange(strJaggedArray);

return temp[0];

}

/**

* 递归

* @author wyh

* @param strJaggedArray

* @return

*/

private static String[][] DoExchange(String[][] strJaggedArray){

int len = strJaggedArray.length;

if(len >= 2){

int len1 = strJaggedArray[0].length;

int len2 = strJaggedArray[1].length;

int newlen = len1*len2;

String[] temp = new String[newlen];

int Index = 0;

for(int i=0;i

for(int j=0;j

temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];

Index ++;

}

}

String[][] newArray = new String[len-1][];

for(int i=2;i

newArray[i-1] = strJaggedArray[i];

}

newArray[0] = temp;

return DoExchange(newArray);

}else{

return strJaggedArray;

}

}

/**

* @param args

*/

public static void main(String[] args) {

String str = "单田芳";

System.out.println(makeStringByStringSet(getPinyin(str)));

}

}

java pinyin4j 官网_Java中文转汉语拼音类库pinyin4j使用示例相关推荐

  1. java applet 官网_java applet

    java applet[编辑] 概述 JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果. 介绍 Java Applet就是用Java语言编写的一些小应 ...

  2. java dozer 官网,Dozer数据对象转换神器

    首先,为什么要进行数据转换? 在一个分层的体系结构中,经常会使用DTO.PO.VO等封装数据,封装数据到特定的数据对象中,然而在很多情况下,某层内部的数据是不允许传递到其它层,不允许对外暴露的,特别是 ...

  3. Java开发官网地址大全

    1.Java开发官网 Mybatis Mybatis中文网 https://mybatis.net.cn/ mybatis pagehelper 分页插件 MyBatis 分页插件 PageHelpe ...

  4. java runtime environment 官网_Java Runtime Environment SE Development Kit

    Java 2平台标准版(J2SE)软件是当今开发和发布急需的企业级应用的首选方案.1.4版在Java的跨平台性和高安全性的基础上,增加了很多新的特性和功能,提供了更高的性能.可规划性.稳定性和服务能力 ...

  5. 【java基础】java的官网和jdk安装和下载

    本篇文章主要讲解java初级知识,java的jdk安装和下载. 作者:任聪聪 java 官网介绍 java只有一个唯一官网,下载jdk千万不要通过资源站下载,很有可能会存在隐患. 官网地址:https ...

  6. Docker的官网在线--中文教程

    1.官网界面:https://www.docker.com/tryit/ In this 10-minute tutorial, see how Docker works first-hand: Yo ...

  7. java dozer 官网_Dozer 使用小结

    这篇文章是本人在阅读Dozer官方文档(5.5.1版本,官网已经一年多没更新了)的过程中,整理下来我认为比较基础的应用场景. 本文中提到的例子应该能覆盖JavaBean映射的大部分场景,希望对你有所帮 ...

  8. java企业官网源码 自适应响应式 freemarker 静态引擎 SSM 框架

    前台:支持(5+3[时尚单页风格])八套模版,可以在后台切换 业务模块(首页管理) 1.   网站信息:维护网站基本信息,比如标题.描述.关键词.联系方式.地址等 2.   业务说明:网站首页文字业务 ...

  9. java pinyin4j 官网_Pinyin4j简单使用教程

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制,在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,这时候Pinyin4j就可以派上用场 有自己私服的可以 ...

最新文章

  1. 计算机视觉分析:传统视觉VS深度学习
  2. crontab shell 每5秒执行_centos 定时任务按秒执行crontab
  3. HDU 1257 最少拦截系统
  4. rabbitmq常用配置
  5. (*长期更新)软考网络工程师学习笔记——Section 5 数据链路层
  6. 错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
  7. 《CCNA无线640-722认证考试指南》——5.4节其他无线拓扑
  8. 他曾经复读才考上三本,如今让华为开出 201 万年薪(其实还拒绝了 360 万 offer)...
  9. pandas nat_EDA神器pandas-profiling万岁?
  10. 安卓游戏广告加速插件_大杀器一款超级良心的免费游戏加速器,PC、安卓、iOS都可使用...
  11. linux vim 安装失败,ubuntu安装vim失败怎么办
  12. 重新认识JavaScript面向对象: 从ES5到ES6
  13. 多线程并发编程知识点汇总
  14. 看我如何拿下BC站的服务器
  15. 南充一中2021成绩查询高考,2021年南充一中升学率高不高?
  16. 怎么在html中使logo,如何用CSS3设计腾讯QQ LOGO?
  17. 空间权重矩阵与相关性检验(Stata)
  18. Java集成Sap/Erp产生的sapjco包重命名/rename问题及解决方案
  19. arttemplate入门
  20. Day 02- Vue3 技术_分析工程结构

热门文章

  1. Element 组件之 右键鼠标 自定义菜单
  2. ​LeetCode刷题实战517:超级洗衣机
  3. 可上网Linux,可以上网了
  4. 深度学习笔记之关于常用模型或者方法
  5. lua for windows学习教程-1
  6. 解决api-ms-win-crt-runtimel1-1-0.dll缺失的方法 api-ms-win-crt-runtime-l1-1-0.dll是电脑系统重要组件,如果缺少会导致很多程序无法运行,
  7. [C#问题--WebBrowser继续追踪]WebBrowser在Form程序中使用的感想2
  8. HP Unix 命令整理
  9. 【计算机网络---自顶向下方法笔记1】计算机网络和因特网概述
  10. python 腾讯视频签到_云函数实现腾讯视频vip自动签到