Java通过pinyin4j实现汉字转拼音
一、Pom依赖
<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
二、代码
package com.zxy.timecard.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
/**
* 拼音工具类
* @author ZENG.XIAO.YAN
* @date 2018年5月9日
*
*/
public class PinYinUtils {
/**
* 获取汉字首字母的方法。如: 张三 --> ZS
* 说明:暂时解决不了多音字的问题,只能使用取多音字的第一个音的方案
* @param hanzi 汉子字符串
* @return 大写汉子首字母; 如果都转换失败,那么返回null
*/
public static String getHanziInitials(String hanzi) {
String result = null;
if(null != hanzi && !"".equals(hanzi)) {
char[] charArray = hanzi.toCharArray();
StringBuffer sb = new StringBuffer();
for (char ch : charArray) {
// 逐个汉字进行转换, 每个汉字返回值为一个String数组(因为有多音字)
String[] stringArray = PinyinHelper.toHanyuPinyinStringArray(ch);
if(null != stringArray) {
sb.append(stringArray[0].charAt(0));
}
}
if(sb.length() > 0) {
result = sb.toString().toUpperCase();
}
}
return result;
}
/**
* 获取汉字拼音的方法。如: 张三 --> zhangsan
* 说明:暂时解决不了多音字的问题,只能使用取多音字的第一个音的方案
* @param hanzi 汉子字符串
* @return 汉字拼音; 如果都转换失败,那么返回null
*/
public static String getHanziPinYin(String hanzi) {
String result = null;
if(null != hanzi && !"".equals(hanzi)) {
char[] charArray = hanzi.toCharArray();
StringBuffer sb = new StringBuffer();
for (char ch : charArray) {
// 逐个汉字进行转换, 每个汉字返回值为一个String数组(因为有多音字)
String[] stringArray = PinyinHelper.toHanyuPinyinStringArray(ch);
if(null != stringArray) {
// 把第几声这个数字给去掉
sb.append(stringArray[0].replaceAll("\\d", ""));
}
}
if(sb.length() > 0) {
result = sb.toString();
}
}
return result;
}
public static void main(String[] args) {
System.out.println(PinYinUtils.getHanziInitials("袁素芳"));
System.out.println(PinYinUtils.getHanziPinYin("袁素芳"));
}
}
package com.zxy.timecard.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
/**
* 拼音工具类
* @author ZENG.XIAO.YAN
* @date 2018年5月9日
*
*/
public class PinYinUtils {
/**
* 获取汉字首字母的方法。如: 张三 --> ZS
* 说明:暂时解决不了多音字的问题,只能使用取多音字的第一个音的方案
* @param hanzi 汉子字符串
* @return 大写汉子首字母; 如果都转换失败,那么返回null
*/
public static String getHanziInitials(String hanzi) {
String result = null;
if(null != hanzi && !"".equals(hanzi)) {
char[] charArray = hanzi.toCharArray();
StringBuffer sb = new StringBuffer();
for (char ch : charArray) {
// 逐个汉字进行转换, 每个汉字返回值为一个String数组(因为有多音字)
String[] stringArray = PinyinHelper.toHanyuPinyinStringArray(ch);
if(null != stringArray) {
sb.append(stringArray[0].charAt(0));
}
}
if(sb.length() > 0) {
result = sb.toString().toUpperCase();
}
}
return result;
}
/**
* 获取汉字拼音的方法。如: 张三 --> zhangsan
* 说明:暂时解决不了多音字的问题,只能使用取多音字的第一个音的方案
* @param hanzi 汉子字符串
* @return 汉字拼音; 如果都转换失败,那么返回null
*/
public static String getHanziPinYin(String hanzi) {
String result = null;
if(null != hanzi && !"".equals(hanzi)) {
char[] charArray = hanzi.toCharArray();
StringBuffer sb = new StringBuffer();
for (char ch : charArray) {
// 逐个汉字进行转换, 每个汉字返回值为一个String数组(因为有多音字)
String[] stringArray = PinyinHelper.toHanyuPinyinStringArray(ch);
if(null != stringArray) {
// 把第几声这个数字给去掉
sb.append(stringArray[0].replaceAll("\\d", ""));
}
}
if(sb.length() > 0) {
result = sb.toString();
}
}
return result;
}
public static void main(String[] args) {
System.out.println(PinYinUtils.getHanziInitials("袁素芳"));
System.out.println(PinYinUtils.getHanziPinYin("袁素芳"));
}
}
三、小结
Java通过pinyin4j实现汉字转拼音的更多相关文章
- java字符操作获取汉字的拼音以及其它经常使用工具
公司需求年年有,今年有点小特殊,哈哈. 忽然加了个需求,说要实现汉字转拼音查询. 在努力下写出来了,如今分享一下吧!.! /** * 汉字转拼音缩写 * * @param str * 要转换的汉字字符 ...
- java获取多个汉字的拼音首字母
本文属于http://java.chinaitlab.com/base/803353.html原创!!! public class PinYin2Abbreviation { // 简体中文的编码范围 ...
- 使用pinyin4j实现汉字转拼音
1. maven项目,请在pom.xml里边添加包依赖相关配置: <dependency> <groupId>net.sourceforge.pinyin4j</grou ...
- [转]Java汉字按照拼音排序
最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...
- JAVA实现汉字转换为拼音 pinyin4j/JPinyin
在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代 ...
- java实现将汉字转为拼音
有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ...
- java汉字转拼音以及得到首字母通用方法
package oa.common.utils; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny ...
- 汉字转拼音的Java类库:JPinyin
JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPinyin主要特性]1.准确.完善的字库:Unicode编码从4E00-9FA5范围及3007(〇 ...
- java 汉字转拼音
先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...
随机推荐
- Retrofit+RxJava(1)-在Android Studio中配置
在build.gradle中添加 //加入retrolambda需要的plugin声明 apply plugin: 'me.tatarka.retrolambda' //retrolambda的编译路 ...
- react native中如何往服务器上传网络图片
let common_url = 'http://192.168.1.1:8080/'; //服务器地址 let token = ''; //用户登陆后返回的token /** * 使用fetch实现 ...
- window下安装RabbitMQ
RabbitMQ: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 ...
- 【SPL标准库专题(5)】 Datastructures:SplStack & SplQueue
这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式:所以放在一起来介绍: 堆栈SplStack # 类摘要 SplStack ...
- Oracle EBS AR 客户API
------------------------------------ 1. Set Environment ------------------------------------ -- 1a. ...
- sql 经典面试题及答案(选课表)
SQL数据库面试题以及答案 Student(Sno,Sname,Sage,Ssex) 学生表 Sno:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别Course(Cno ...
- vs 2012/2013 等工具中,使用正则表达式,查找、替换
有这样一个需求,就是一个文本中,需要找出指定格式的字符串进行指定的替换,当前我的真实需求是,一个sql创建触发器的文本,我需要将所有的 包含 TB_SYS 的表名后面添加一个 “_NEW”字符串! 例 ...
- sql server数据导入导出方法统计
常用的数据量不是很大的情况的几种方法:转载地址 http://www.cnblogs.com/changbluesky/archive/2010/06/23/1761779.html 大数据量的推荐导 ...
- Linux 文本处理命令
最近在使用 BASH 进行处理 文本文件的时候,对于文本处理真的是力不从心,今天进行搜集一下linux 中文本处理相关的命令,这样你在进行书写shell 脚本的时候,就能写出更好的方案. 命令搜集: ...
- redis之禁用保护模式以及修改监听IP
今天在安装filebeat的时候,出现了关于redis报错的问题,所以来总结一下: 报错信息是: (error) DENIED Redis is running in protected mode b ...