【Java】汉字转拼音
将汉字转成拼音及汉字首字母,可以使用jar包 pingyin4j,但是遇到多音节汉字就会有问题。如果使用大名鼎鼎的jpinyin,可以自动识别常见多音字,而且还支持简体转换为繁体,检查是简体还是繁体,是否为中文字符等功能。下面简单列举了汉字转换拼音、简体转换繁体和判断是否为中文字符串。
依赖包
<dependency>
<groupId>com.github.stuxuhai</groupId>
<artifactId>jpinyin</artifactId>
<version>1.1.8</version>
</dependency>
示例
import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; @Slf4j
@Component
public class ChangeToPinYinJP { private static String REGEX_CHINESE_CHARACTER = "[\\u4E00-\\u9FA5]+";
public static void main(String[] args) {
System.out.println(changeHanZi2TonePinYin("音乐,。 359 非常 Wiener 快乐"));
// 搞不定的示例
printStr("人参 参与"); } public static void printStr(String ret) {
String result = changeToTonePinYin(ret);
System.out.println("Oops! --》 " + result);
} /**
* 转换为有声调的拼音字符串
*
* @param givenHanZi 指定汉字
* @return 有声调的拼音字符串
*/
public static String changeToMarkPinYin(String givenHanZi) {
String tempStr = null;
try {
tempStr = PinyinHelper.convertToPinyinString(givenHanZi, " ", PinyinFormat.WITH_TONE_MARK);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} /**
* 转换为数字声调字符串
*
* @param givenHanZi 需转换的汉字
* @return 转换完成的拼音字符串
*/
public static String changeToNumberPinYin(String givenHanZi) {
String tempStr = null;
try {
tempStr = PinyinHelper.convertToPinyinString(givenHanZi, " ", PinyinFormat.WITH_TONE_NUMBER);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} /**
* 转换为不带音调的拼音字符串,只转换汉字部分,不转换数字、标点符号和英文字母
* 自动识别常用多音字
* @param givenHanZi 汉字字符串
* @return 拼音字符串
*/
public static String changeHanZi2TonePinYin(String givenHanZi) {
if (StringUtils.isBlank(givenHanZi)) {
return "";
}
String tempOutput = "";
StringBuilder output = new StringBuilder();
char[] input = givenHanZi.trim().toCharArray(); try {
for (int i = 0; i < input.length; i++) {
if (Character.toString(input[i]).matches(REGEX_CHINESE_CHARACTER)) {
tempOutput += Character.toString(input[i]);
} else {
tempOutput = changeToTonePinYin(tempOutput);
output = output.append(tempOutput).append(Character.toString(input[i]));
tempOutput = "";
}
}
if (StringUtils.isNotBlank(tempOutput)) {
output = output.append(changeToTonePinYin(tempOutput));
}
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return output.toString();
} /**
* 转换为不带音调的拼音字符串
*
* @param givenHanZi 需转换的汉字
* @return 拼音字符串
*/
public static String changeToTonePinYin(String givenHanZi) {
String tempStr = null;
try {
tempStr = PinyinHelper.convertToPinyinString(givenHanZi, " ", PinyinFormat.WITHOUT_TONE);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} /**
* 转换为每个汉字对应拼音首字母字符串
*
* @param givenHanZi 需转换的汉字
* @return 拼音字符串
*/
public static String changeToGetShortPinYin(String givenHanZi) {
String tempStr = null;
try {
tempStr = PinyinHelper.getShortPinyin(givenHanZi);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} /**
* 检查汉字是否为多音字
*
* @param givenHanZi 需检查的汉字
* @return true 多音字,false 不是多音字
*/
public static boolean checkPinYin(char givenHanZi) {
boolean check = false;
try {
check = PinyinHelper.hasMultiPinyin(givenHanZi);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return check;
} /**
* 简体转换为繁体
*
* @param givenHanZi
* @return
*/
public static String changeToTraditional(String givenHanZi) {
String tempStr = null;
try {
tempStr = ChineseHelper.convertToTraditionalChinese(givenHanZi);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} /**
* 繁体转换为简体
*
* @param givenHanZi
* @return
*/
public static String changeToSimplified(String givenHanZi) {
String tempStr = null;
try {
tempStr = ChineseHelper.convertToSimplifiedChinese(givenHanZi);
} catch (Exception e) {
log.error( "转换异常信息:", e);
}
return tempStr;
} }
【Java】汉字转拼音的更多相关文章
- java汉字转拼音以及得到首字母通用方法
package oa.common.utils; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny ...
- [转]Java汉字按照拼音排序
最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...
- java 汉字转拼音
先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...
- java汉字转拼音的工具类
import com.google.common.base.Strings;import net.sourceforge.pinyin4j.PinyinHelper;import net.source ...
- Java汉字转拼音
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...
- Android Java汉字转拼音总结
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23187701 开发过程中有时候会遇到使用拼音模糊搜索等功能(典型的就是Andro ...
- JAVA汉字转拼音(取首字母大写)
import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...
- 用jpinyin实现汉字转拼音功能
一.简介 项目地址:https://github.com/stuxuhai/jpinyin JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPiny ...
- 汉字转拼音开源工具包Jpinyin介绍
最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友. https://gi ...
- java实现将汉字转为拼音
有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ...
随机推荐
- base64编码与一般的ASCII码和二进制编码有什么不同?base64详解
在密码学实践中,经常会用到Base64编码.比如大名鼎鼎的密码学挑战题"Matasano Crypto Challenges"的第一集合的第一题,就是要求把一个Hex编码的字符串转 ...
- el-tree 动态图标
举个栗子 https://jsfiddle.net/taadis/x9crjsum/ https://jsrun.net/MYXKp - 上面看不了的,可以看这个...
- 学习Django【2】把视图和路由连接起来的是URLconfigs的配置文件
在view.py视图中定义: def detail(request, question_id): return HttpResponse("You're looking at questio ...
- c#生成一个某文本中不包含的随机字符串
//生成一个某文本中不包含的随机字符串 private static string GetRandomStr(string allStr) { int number; string resStr; d ...
- 基于FREERTOS的BOOTLOADER跳转APP调试笔记
使用场景:BootLoader基于Freertos,APP是裸机 程序. BootLoader设置方法 void iap_app_load(uint32_t appxaddr) { uint32_t ...
- Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】
〇.前言 Redis 集群的核心优势在于高可用性.可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景. 本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群 ...
- Condition类的signal()方法底层原理
一.Condition类的signal()方法底层原理 Condition 接口的 signal 方法是用于唤醒一个在 Condition 上等待的线程.与 Object 的 notify 方法类似, ...
- Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
本话讲的是Avalonia中相比于WPF更方便的一些特性 布局 布局方面没什么好说的,和WPF没什么区别,Grid,StckPanel...这些,不熟悉的话可以B站上找一下教程 xml树 在WPF中我 ...
- MacOS v15.X安装HP旧款打印机驱动(P1606dn为例)
一.下载官方驱动 先去官网下载一下HP提供的Mac下的驱动合集(图1),可惜的只支持15.0以下版本安装. https://support.hp.com/cn-zh/drivers/hp-laserj ...
- hadoop部署安装(五)SPARK
1. 配置spark 4.1 解压压缩包 [root@centosmv ~]# tar xf spark-2.4.4-bin-without-hadoop.tgz [root@centosmv ~]# ...