java中文转全拼工具类分享

时间:2022-02-07 09:50:57 


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;

public class Pinyin4jUtil {
 /**
  * 将汉字转换为全拼
  *
  * @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数组中
     t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
    } else {
     // 如果不是汉字字符,间接取出字符并连接到字符串t4后
     t4 += Character.toString(t1[i]);
    }
   }
  } catch (BadHanyuPinyinOutputFormatCombination e) {
   e.printStackTrace();
  }
  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 void main(String[] args) {
  String cnStr = "中国";
  System.out.println(getPinYin(cnStr));
  System.out.println(getPinYinHeadChar(cnStr));
  System.out.println(getCnASCII(cnStr));
 }
}

标签:中文转全拼
0
投稿

猜你喜欢

  • spring boot如何指定启动端口

    2021-06-27 19:52:14
  • C#超市收银系统设计

    2023-06-21 00:00:09
  • Java根据ip地址获取归属地实例详解

    2023-11-25 06:24:38
  • 聊一聊Java的JVM类加载机制

    2023-11-08 03:58:37
  • 利用Spring Boot操作MongoDB的方法教程

    2023-11-29 11:14:27
  • Java虚拟机内存结构及编码实战分享

    2023-11-29 13:47:47
  • java Hibernate多对多映射详解及实例代码

    2023-07-02 07:24:40
  • IntelliJ IDEA 如何配置git的操作方法

    2021-12-28 11:24:44
  • Springboot如何操作redis数据

    2022-05-30 21:36:41
  • Java基于分治法实现的快速排序算法示例

    2023-12-15 07:39:06
  • 详解Spring boot使用Redis集群替换mybatis二级缓存

    2023-03-09 17:17:38
  • SpringCloud全面解析@FeignClient标识接口的过程

    2023-08-05 12:34:44
  • 学习Java设计模式之观察者模式

    2023-07-03 05:17:46
  • JAVA遍历Map集合的几种方法汇总

    2021-09-01 12:34:07
  • SpringBoot应用启动流程源码解析

    2023-11-25 00:03:24
  • JAVA 字符串加密、密码加密实现方法

    2023-11-28 04:08:09
  • 轻松学习C#的方法

    2023-06-21 13:22:32
  • 使用IDEA搭建一个简单的SpringBoot项目超详细过程

    2022-07-19 11:43:58
  • 详解java接口基础知识附思维导图

    2023-11-09 10:07:28
  • JavaWeb项目Servlet无法访问问题解决

    2022-10-10 03:33:52
  • asp之家 软件编程 m.aspxhome.com