Java工具类——汉字转拼音

简介: 写了一个根据汉字获取拼音字符串的工具类

需要用到pinyin4j-2.5.0.jar包。

废话不多说上代码。

packagecom.xxx.util;
importnet.sourceforge.pinyin4j.PinyinHelper;
importnet.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;
importnet.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/*** 根据汉字获取拼音处理* @AuThor wangbyn*/publicclassGetPinyin {
/*** 得到 全拼* @Param src* @return*/publicstaticStringgetPingYin(Stringsrc) {
char[] t1=null;
t1=src.toCharArray();
String[] t2=newString[t1.length];
HanyuPinyinOutputFormatt3=newHanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuffert4=newStringBuffer();
intt0=t1.length;
try {
for (charc : t1) {
// 判断是否为汉字字符if (Character.toString(c).matches(
"[\\u4E00-\\u9FA5]+")) {
t2=PinyinHelper.toHanyuPinyinStringArray(c, t3);
t4.append(t2[0]);
                                } else {
t4.append(Character.toString(c));
                                }
                        }
returnt4.toString();
                } catch (BadHanyuPinyinOutputFormatCombinatione1) {
e1.printStackTrace();
                }
returnt4.toString();
        }
/*** 得到中文首字母* @param str* @return*/publicstaticStringgetPinYinHeadChar(Stringstr) {
StringBufferconvert=newStringBuffer();
for (intj=0; j<str.length(); j++) {
charword=str.charAt(j);
String[] pinyinArray=PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray!=null) {
convert.append(pinyinArray[0].charAt(0));
                        } else {
convert.append(word);
                        }
                }
returnconvert.toString();
        }
publicstaticvoidmain(String[] args) {
StringcnStr="俺没有文化";
System.out.println(getPingYin(cnStr));
System.out.println(getPinYinHeadChar(cnStr));
        }
}

运行结果:

image.png

目录
相关文章
|
4月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
226 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
4月前
|
Java
Java 些许公共工具类
Java 些许公共工具类
27 1
|
6月前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
42 1
|
6月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
6月前
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
90 0
|
7月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
86 1
|
7月前
|
设计模式 缓存 安全
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
60 0
|
7月前
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
78 0
|
7月前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
73 0
|
7月前
|
设计模式 安全 NoSQL
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
88 0