zoukankan      html  css  js  c++  java
  • Java实现将中文转成拼音和ASCII码

    最近项目上遇到一个需求:模糊搜索姓名时既可以输入汉字也可以输入拼音进行搜索,这就要求在保存姓名时也要将其拼音保存起来。

    好了,废话不说了,直接上代码!

    实现步骤:

    1、pom.xml配置文件引入jar包

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

    2、将代码实现逻辑封装成一个工具类

    package minyuantec.backupsystem.action;
    
    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 PinyinUtil {
    
        /**
         * 将汉字转换为全拼
         * 
         * @param src
         * @return String
         */
        private static String getPinYin(String src) {
            char[] t1 = src.toCharArray();
            String[] t2 = new String[t1.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) {
                    // 判断是否为汉字字符
                    if (Character.toString(t1[i]).matches("[\u4E00-\u9FA5]+")) {
                        t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
                        t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
                    } else {
                        // 如果不是汉字字符,直接取出字符并连接到字符串t4后
                        t4 = t4 + Character.toString(t1[i]);
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination var8) {
                var8.printStackTrace();
            }
            return t4;
        }
    
        /**
         * 中文汉字转成拼音首字母大写
         * 
         * @param str
         * @return String
         */
        public static String testPinyinInitial(String name){
            String pinyinInitial = "";
            try {
                char[] charArray = name.toCharArray();
                StringBuilder pinyin = new StringBuilder();
                HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
                // 设置大小写格式
                defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
                // 设置声调格式:
                defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
                for (int i = 0; i < charArray.length; i++) {
                    // 匹配中文,非中文转换会转换成null
                    if (Character.toString(charArray[i]).matches("[\u4E00-\u9FA5]+")) {
                        String[] hanyuPinyinStringArray = PinyinHelper
                                .toHanyuPinyinStringArray(charArray[i], defaultFormat);
                        if (hanyuPinyinStringArray != null) {
                            pinyin.append(hanyuPinyinStringArray[0].charAt(0));
                        }
                    }
                }
                pinyinInitial = pinyin.toString();
                return pinyinInitial;
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                // TODO: handle exception
            }
            return pinyinInitial;
            
        }
        
        //中文汉字转成ASCII码
        public static String getCnASCII(String cnStr) {
            StringBuffer strBuf = new StringBuffer();
            // 将字符串转换成字节序列
            byte[] bGBK = cnStr.getBytes();
            for (int i = 0; i < bGBK.length; i++) {
                // 将每个字符转换成ASCII码
                strBuf.append(Integer.toHexString(bGBK[i] & 0xff) + " ");
            }
            return strBuf.toString();
        }
    
        public static void main(String[] args) {
            String str = "你好世界";
            String pinyin = getPinYin(str);
            System.out.println(pinyin);
            String pinyinInitial = testPinyinInitial(str);
            System.out.println(pinyinInitial);
            String ascii = getCnASCII(str);
            System.out.println(ascii);
    
        }
    
    }

    打印结果为:

    nihaoshijie
    NHSJ
    e4 bd a0 e5 a5 bd e4 b8 96 e7 95 8c 

    欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!

      ▼微信扫一扫下图↓↓↓二维码关注

     

  • 相关阅读:
    Rabbit简单测试实例
    RabbitMQ-2 工作队列
    RabbitMQ-1 Helloword
    utmp
    导入wordpress数据库到mysql报错
    Tengine 反向代理状态检测
    阿里云服务器挖矿wipefs处理
    JbossMiner 挖矿蠕虫分析 (转载)
    centos6+nginx+php+mysql+memcached+wordpress
    php安装ZendGuardLoader扩展问题
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/12769465.html
Copyright © 2011-2022 走看看