1、pom中引入包

<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version>
</dependency>

2、代码

package com.example.demo.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*** 汉字工具类*/
public class ChineseCharacterUtil {/**** 将汉字转成拼音(取首字母或全拼)* @param hanzi* @param full 是否全拼 true-全拼 false-首字母*             如哈尔滨  haerbin    heb* @return*/public static String convertHanzi2Pinyin(String hanzi,boolean full){/**** ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言* ^[\u4E00-\u9FFF]+$ 匹配简体和繁体* ^[\u4E00-\u9FA5]+$ 匹配简体*/String regExp="^[\u4E00-\u9FFF]+$";StringBuffer sb=new StringBuffer();if(hanzi==null||"".equals(hanzi.trim())){return "";}String pinyin="";for(int i=0;i<hanzi.length();i++){char unit=hanzi.charAt(i);if(match(String.valueOf(unit),regExp))//是汉字,则转拼音{pinyin=convertSingleHanzi2Pinyin(unit,hanzi);if(full){sb.append(pinyin);}else{sb.append(pinyin.charAt(0));}}else{sb.append(unit);}}return sb.toString();}/**** @param str 源字符串* @param regex 正则表达式* @return 是否匹配*/public static boolean match(String str,String regex){Pattern pattern=Pattern.compile(regex);Matcher matcher=pattern.matcher(str);return matcher.find();}/**** 将单个汉字转成拼音* @param hanzi* 汉字有可能是多音字* @return*/private static String convertSingleHanzi2Pinyin(char hanzi,String hanziAll){HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();// 设置声调格式/***  HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:liu2HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:liuHanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:liú*/outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//无声调// 设置大小写outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 设置特殊拼音的显示格式/***  HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,例如:lu:HanyuPinyinVCharType.WITH_V 以V表示该字符,例如:lvHanyuPinyinVCharType.WITH_U_UNICODE 以ü表示*/String[] res;try {res = PinyinHelper.toHanyuPinyinStringArray(hanzi,outputFormat);return pinyinMor(res,hanziAll);//sb.append(res[0]);//对于多音字,只用第一个拼音} catch (Exception e) {e.printStackTrace();}return "";}/*** 是否是多音字* res  拼音数据组* hanziAll 汉字*/private static String pinyinMor(String[] res,String hanziAll){//是多音字if(res.length>1){if(hanziAll.indexOf("市")>-1){return res[1];}}//不是多音字返回return res[0];}public static void main(String[] args) {String cityName="重庆市";//全拼System.out.println(cityName+":"+"全拼->"+convertHanzi2Pinyin(cityName,true));//首字母System.out.println(cityName+":"+"首字母->"+convertHanzi2Pinyin(cityName,false));}
}

3、结果

判断是否是多音字后输出结果

重庆市:全拼->chongqingshi
            重庆市:首字母->cqs

       不判断是否是多音字后输出结果
       
  zhong
         chong
         qing
         shi
         重庆市:全拼->zhongqingshi
           zhong
          chong
          qing
          shi
          重庆市:首字母->zqs

java汉字获取全拼、首字母相关推荐

  1. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

  2. SQL 根据汉字获取全拼

    代码   1 /*   2  SQL 根据汉字获取全拼(有些字还没有添加上去,请自已加上去,涂聚文注)   3  1.生成所有读音临时表   4  2.根据Chinese_PRC_CS_AS_KS_W ...

  3. sql文字转换全拼_SQL 根据汉字获取全拼的代码

    /* SQL 根据汉字获取全拼(有些字还没有添加上去,请自已加上去,涂聚文注) 生成所有读音临时表 根据Chinese_PRC_CS_AS_KS_WS 排序获取读音 geovindu@163.com ...

  4. java 汉字转换全拼、首字母拼音

    最近接到需求,要求商城中进行半模糊搜索时,输入拼音字母同样要求进行自动匹配出相关品牌.类目.关键词等数据,从而进行筛选商品 本片内容只记录汉字转换拼音 方案一:在mysql数据库中编写函数,此方法存在 ...

  5. java 汉字转拼音工具_【转载】Java汉字转全拼工具

    个人在使用过程发现了几个问题需要注意: 1.本类使用了Pinyin4j开源库.点击下载 2.Pinyin4j本身是支持多音字的,但这胸弟貌似处理掉了,"长沙"会返回"zh ...

  6. ORACLE根据汉字获取拼音码:首字母/全拼/首字母截取

    create or replace package  GetHZPY is --oracle汉字转拼音 PACKAGE     --1.获得全拼  www.2cto.com   --SELECT GE ...

  7. 汉字转拼音/全拼/首字母

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Pinyin4j 简介 二.使用步骤 1.引入依赖 2.具体实现 总结 前言 项目中需要通过组织名称获取对应的简拼 ...

  8. 搜索功能(支持全拼,首字母,不区分大小写,关键字变色等)

    上次写的可能有人说阅读性太差,所以改成这种编辑了 用到的工具主要是pinyin4j(compile 'com.belerweb:pinyin4j:2.5.1'),将字符串转化成首字拼写或全拼,然后是计 ...

  9. 汉字转换成拼音、汉字获取每个字首字母行程助记码的工具,附详细用法

    效果展示 //获取汉字拼音,可带字母数字,不进行转换System.out.println("好好学习"+getPinyin("好好学习"));System.ou ...

最新文章

  1. 实验仪器参数关系表达与传递
  2. 2021-05-25 传递函数阶跃响应指标的matlab计算
  3. Perl学习笔记(2)
  4. sklearn自学指南(part11)--Elastic-Net及多任务Elastic-Net
  5. file_get_contents请求失败处理_SpringCloud Gateway网关处理请求过程中遇到400Bad Request问题解决方案...
  6. 用C语言设计光线成像程序——计算机达人成长之路(26)
  7. 英语词根词缀记忆法(全集)_闭着眼睛就能背好的托福词汇记忆法
  8. Citrix XenAPP域迁移操作步骤
  9. 奇怪的315:大家都知道,为什么要等晚会曝光,管理部门呢
  10. window.onscroll页面滚动条滚动事件
  11. python数据挖掘学习路线图
  12. 多源异构数据库实时同步解决方案
  13. tornado 学习笔记7 RequestHandler功能分析
  14. 为数字添加千分位符号(金额千分位)
  15. vue IE兼容性问题汇总
  16. el-talbe如何在打印的时候,每页都能有表头?
  17. 苹果考虑推迟发布5G iPhone
  18. python爬取南京市房价_Python的scrapy之爬取链家网房价信息并保存到本地
  19. uboot配置和编译过程详解
  20. 对人工智能未来发展的思考

热门文章

  1. Java 创建背景透明的文字图片、将文本写到图片上
  2. Java日志-总结【这一篇够了】
  3. VOA Special English 简介
  4. MySQL3_基础_基本的 SELECT 语句
  5. puppet和saltstack 对比
  6. 计算机右击没有与之关联的程序,解决Win7该文件没有与之关联的程序来执行操作错误...
  7. 机器学习-回归中的相关性(Correlation Coefficient)和R平方值算法
  8. org.apache.ibatis.type.TypeException: Could not set parameters for mapping报错
  9. WARNING:Could not increase the asynch I/O limit to 64 for SQL direct I/O. It is set to 0
  10. jQuery 入门选择器