【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方法中测 ...
随机推荐
- LCP 06. 拿硬币
地址:https://leetcode-cn.com/problems/na-ying-bi/ <?php /** * Class Solution * 桌上有 n 堆力扣币,每堆的数量保存在数 ...
- redmine 用户没有状态内容
- 探秘Transformer系列之(12)--- 多头自注意力
探秘Transformer系列之(12)--- 多头自注意力 目录 探秘Transformer系列之(12)--- 多头自注意力 0x00 概述 0x01 研究背景 1.1 问题 1.2 根源 1.3 ...
- [tldr] fish shell添加环境变量到配置文件
fish shell配置文件的编写格式和位置都和bash不同 文件位置 位于~/.config/fish/config.fish 设置PATH fish shell不会去读取~/.bashrc文件中的 ...
- 如何解决ubuntu安装第三方deb出现的read unknown VMA问题(SUID sandbox配置问题)
前言 众所不周知,ubuntu的snap有些让人无语凝噎的问题,比方说如果你在Ubuntu 24.04 LTS通过它安装vscode,恭喜你,你无法在vscode中输入中文,缘由不明,又或者对于str ...
- grpc unable to determine Go import path for
前言 在 proto 文件夹下执行如下命令: $ protoc --go_out=plugins=grpc:. *.proto 报错:无法确定Go导入路径 protoc-gen-go: unable ...
- jquery简单的上传图片预览
html <div id="bcd"></div> <input type="file" id="abc"&g ...
- Flask快速入门4-蓝图
十六,Flask 用蓝图实现模块化的应用 1,Flask 为什么使用蓝图? Flask 中的蓝图为这些情况设计: 把一个应用分解为一个蓝图的集合.这对大型应用是理想的.一个项目可以实例化 一个应用对象 ...
- minio迁移工具 mc
mc mirror 命令属于 MinIO Client (mc) 工具,默认不会随 MinIO 服务器一起安装,需要 单独安装. 安装 MinIO Client (mc) Linux/macOS 执行 ...
- 分析 AIX 和 Linux 性能的免费工具。
一.软件介绍1.分析工具nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新.这个高效的工具可以工作于任何哑屏幕.telnet 会话.甚至拨号线路.另外,它并不会消耗大量 ...