zoukankan      html  css  js  c++  java
  • 使用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));
    }

    }
  • 相关阅读:
    每日英语:Here's Why You Won't Finish This Article
    每日英语:'Still Out Of Work?' How To Handle Holiday Small Talk
    每日英语:How to Spend Christmas in Asia
    每日英语:Losing It at the Movies: Silly Beats Sober in China's Box Office
    每日英语:How Do iPhone Photos Impact Our Experience?
    一种使用CSS固定表头和列的方法
    一个asp.net中使用的flash展示控件
    gridview中cell的选择和编辑
    asp.net 2.0中的profile对象简介
    gridview中使用方向键标记选中行
  • 原文地址:https://www.cnblogs.com/jimmy-muyuan/p/5692104.html
Copyright © 2011-2022 走看看