当前位置: 首页 > news >正文

使用pinyin4j汉字转pinyin

引入maven依赖
<dependencies>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>





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 net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import java.io.UnsupportedEncodingException;


public class CNUtil {
/**
* 将汉字转换为全拼
*
* @param src
* @return String
*/
public static String getPinYin(String src) {
char[] t1 = null;
t1 = src.toCharArray();
// System.out.println(t1.length);
String[] t2 = new String[t1.length];
// System.out.println(t2.length);
// 设置汉字拼音输出的格式
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
String t4 = "";
int t0 = t1.length;
try {
for (int i = 0; i < t0; i++) {
// 判断是否为汉字字符
// System.out.println(t1[i]);
if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
if(t2 != null){
t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
}
} else {
// 如果不是汉字字符,直接取出字符并连接到字符串t4后
t4 += Character.toString(t1[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
e.printStackTrace();
//t4 = "abc";
}
return t4;
}

/**
* 提取每个汉字的首字母
*
* @param str
* @return String
*/
public static String getPinYinHeadChar(String str) {
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
// 提取汉字的首字母
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
} else {
convert += word;
}
}
return convert;
}

/**
* 将字符串转换成ASCII码
*
* @param cnStr
* @return String
*/
public static String getCnASCII(String cnStr) {
StringBuffer strBuf = new StringBuffer();
// 将字符串转换成字节序列
byte[] bGBK = cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
// System.out.println(Integer.toHexString(bGBK[i] & 0xff));
// 将每个字符转换成ASCII码
strBuf.append(Integer.toHexString(bGBK[i] & 0xff)+" ");
}
return strBuf.toString();
}

public static String getFirstUpperCase(String str){
String buf = getPinYin(str).substring(0, 1);

return buf.toUpperCase();
}

/**
* 获得GBK编码的字符串长度
* @param value
* @return
*/
public static int getGBKLength(String value){
if(value==null){
return 0;
}
try {
return value.getBytes("GBK").length;
} catch (UnsupportedEncodingException e) {
return 0;
}
}
public static void main(String[] args) {
String cnStr = "中华人民共和国";
System.out.println(getPinYin(cnStr));
System.out.println(getPinYinHeadChar(cnStr));
System.out.println(getFirstUpperCase(cnStr));
// System.out.println(getCnASCII(cnStr));
System.out.println(String.format("%06d", 1));
}

}

转载于:https://www.cnblogs.com/jimmy-muyuan/p/5692104.html

相关文章:

  • 在MYEclipse中部署JSP
  • [代码大全读书笔记]如何定义一个好的变量名
  • servlet.getServletContext()和getServletConfig(),什么意思和用法
  • OpenStack-Mitaka 一键安装测试环境脚本
  • Application, Session, Cookie, Viewstate, Cache对象用法和区别
  • !!Dom4j 学习笔记
  • 豪华的办公设备
  • DOM详解
  • Apache FileUpload 上传以及 JExcelApi 解析
  • this的使用
  • !!java web学习笔记(一到五)
  • (ibm)Java 语言的 XPath API
  • 一、java环境搭建
  • IE与firefox下的css区别
  • copy与strong的举例
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • AHK 中 = 和 == 等比较运算符的用法
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • javascript 总结(常用工具类的封装)
  • js正则,这点儿就够用了
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Promise初体验
  • TypeScript迭代器
  • v-if和v-for连用出现的问题
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 复杂数据处理
  • 前嗅ForeSpider教程:创建模板
  • 如何利用MongoDB打造TOP榜小程序
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 携程小程序初体验
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET MVC 验证码
  • .net Stream篇(六)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net6 webapi log4net完整配置使用流程
  • .netcore如何运行环境安装到Linux服务器
  • .NET开发人员必知的八个网站
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • //解决validator验证插件多个name相同只验证第一的问题
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [leetcode]_String to Integer (atoi)
  • [Mac软件]Goldie App v2.2 Mac黄金比例设计工具