将汉字转成拼音及汉字首字母,可以使用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】汉字转拼音的更多相关文章

  1. java汉字转拼音以及得到首字母通用方法

    package oa.common.utils;   import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny ...

  2. [转]Java汉字按照拼音排序

    最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...

  3. java 汉字转拼音

    先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...

  4. java汉字转拼音的工具类

    import com.google.common.base.Strings;import net.sourceforge.pinyin4j.PinyinHelper;import net.source ...

  5. Java汉字转拼音

    import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...

  6. Android Java汉字转拼音总结

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23187701 开发过程中有时候会遇到使用拼音模糊搜索等功能(典型的就是Andro ...

  7. JAVA汉字转拼音(取首字母大写)

    import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...

  8. 用jpinyin实现汉字转拼音功能

    一.简介 项目地址:https://github.com/stuxuhai/jpinyin JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPiny ...

  9. 汉字转拼音开源工具包Jpinyin介绍

    最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友. https://gi ...

  10. java实现将汉字转为拼音

    有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ...

随机推荐

  1. 【Python-Json】自定义类输入json序列化、json的读取与写入

    AI 问答 Question json支持numpy数组么 Answer 不幸的是,标准的 JSON格式 不直接支持 NumPy 数组.JSON是一种用于存储和交换数据的文本格式,它有限的数据类型只包 ...

  2. LLM · RL | Plan4MC:使用有向无环图 high-level planning + 基于 RL 执行 low-level policy

    文章标题:Skill Reinforcement Learning and Planning for Open-World Minecraft Tasks 最初发表时间:2023.03 arxiv:h ...

  3. 关于valueOf的一点思考

    官方描述:返回值为该对象的原始值. 来源:Object.prototype,所以所有js对象都继承了此方法,根据犀牛书第六版的描述,对象转换为数字和字符串的时候的过程是不一样的. 对象 -> 字 ...

  4. Flask快速入门3

    十一,Flask Cookies Cookie以文本文件的形式存储在客户端的计算机上.其目的是记住和跟踪与客户使用相关的数据,以获得更好的访问者体验和网站统计信息. Request对象包含Cookie ...

  5. python实现排列组合--itertools

    这是一个python自带的工具集,简单好用功能强大,能够大大提升编写代码效率. 功能不止排列组合,其他的用用加深理解了再整理. 官方文档:https://docs.python.org/zh-cn/3 ...

  6. oracle服务 linux启动命令

    一.Linux下启动Oracle Linux下启动Oracle分为两步: 1)启动监听: 2)启动数据库实例: 1.登录服务器,切换到oracle用户,或者以oracle用户登录 [admin@dat ...

  7. Nginx配置跨域,覆盖后端服务跨域配置

    本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置. 先看下后端代码跨域配置: 主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名. @Bean public Co ...

  8. Java WatchService监控指定路径下的文件新增、删除和修改(子文件夹、指定文件类型)

    WatchService 是 Java NIO 包 (java.nio.file) 中提供的一个用于监控文件系统变化的 API.它允许应用程序监听目录中的文件创建.修改和删除事件. 基本原理 Watc ...

  9. Efficient Scalable Multi-Party Private Set Intersection

    论文学习:Efficient Scalable Multi-Party Private Set Intersection 这篇论文提出了一种基于双中心零共享(Bicentric Zero-Sharin ...

  10. 【Python】配置pip使用国内镜像源

    配置pip使用国内镜像源 零.问题 使用pip安装插件时总是很慢,咋解决呢? 壹.解决 在桌面上你的文件夹内新建pip目录,一般路径如下:C:\Users\{$你的用户名},比如我的用户名是Minuy ...