java如何把汉字转拼音

在项目中很多小伙伴会用到汉字转拼音功能需求,在这里给大家分享一个jar包:pinyin4j;

第一步:

pom中添加依赖


    com.belerweb
    pinyin4j
    2.5.0

第二步:

测试

    @Test
    public void test02(){
        String[] ni = PinyinHelper.toHanyuPinyinStringArray('你');
        System.out.println(ni[0]);
        //打印:ni3  解释:ni是拼音 3是音调
    }

给大家提供一个工具类


/**
 * 拼音工具类
 *
 * @Author: Wangzhen
 * @Date: 2020-03-06 14:15
 * @Description: 
 */
public final class ChineseCharacterUtil {

    /**
     * 获取汉字首字母或全拼大写字母
     *
     * @param chinese 汉字
     * @param isFull  是否全拼 true:表示全拼 false表示:首字母
     * @return 全拼或者首字母大写字符窜
     */
    public static String getUpperCase(String chinese, boolean isFull) {
        return convertHanzi2Pinyin(chinese, isFull).toUpperCase();
    }

    /**
     * 获取汉字首字母或全拼小写字母
     *
     * @param chinese 汉字
     * @param isFull  是否全拼 true:表示全拼 false表示:首字母
     * @return 全拼或者首字母小写字符窜
     */
    public static String getLowerCase(String chinese, boolean isFull) {
        return convertHanzi2Pinyin(chinese, isFull).toLowerCase();
    }

    /**
     * 将汉字转成拼音
     * 

* 取首字母或全拼 * * @param hanzi 汉字字符串 * @param isFull 是否全拼 true:表示全拼 false表示:首字母 * @return 拼音 */ public static String convertHanzi2Pinyin(String hanzi, boolean isFull) { /*** * ^[\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); if (isFull) { sb.append(pinyin); } else { sb.append(pinyin.charAt(0)); } } else { sb.append(unit); } } return sb.toString(); } /** * 将单个汉字转成拼音 * * @param hanzi 汉字字符 * @return 拼音 */ public static String convertSingleHanzi2Pinyin(char hanzi) { HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String[] res; StringBuffer sb = new StringBuffer(); try { res = PinyinHelper.toHanyuPinyinStringArray(hanzi, outputFormat); sb.append(res[0]);//对于多音字,只用第一个拼音 } catch (Exception e) { e.printStackTrace(); return ""; } return sb.toString(); } /*** * 匹配 *

* 根据字符和正则表达式进行匹配 * * @param str 源字符串 * @param regex 正则表达式 * * @return true:匹配成功 false:匹配失败 */ public static boolean match(String str, String regex) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return matcher.find(); } /** * 测试方法 */ public static void main(String[] args) { System.out.println(convertHanzi2Pinyin("张老师", false).toUpperCase()); } }

 

你可能感兴趣的:(java如何把汉字转拼音)