首页 > 编程语言 >Java之拼音工具类的使用

Java之拼音工具类的使用

时间:2022-11-16 16:46:43浏览次数:32  
标签:Java 拼音 chinese newChar pinyinStr defaultFormat 工具 String

在自动生成字段key时,字段的key可以设置成使用字段名的拼音。

拼音工具类实现如下:

package com.cmit.kapok.system.utils;

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.exception.BadHanyuPinyinOutputFormatCombination;

public class PinYinUtil {

    /**
     * 汉字转为拼音
     * @param chinese
     * @return
     */
    public static String toPinyin(String chinese){
        chinese = chinese.replace("/","_");
        int index1 = chinese.indexOf("(");
        if(index1>=0){
            chinese = chinese.substring(0,index1);
        }else{
            int index2 = chinese.indexOf("(");
            if(index2>=0){
                chinese = chinese.substring(0,index2);
            }
        }
        String pinyinStr = "";
        char[] newChar = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < newChar.length; i++) {
            if (newChar[i] > 128) {
                try {
                    if(pinyinStr.length()>0 && !pinyinStr.substring(pinyinStr.length()-1).equals("_")){
                        pinyinStr += "_";
                    }
                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            }else{
                pinyinStr += newChar[i];
            }
        }
        return pinyinStr;
    }

    /**
     * 获取字符串拼音的第一个字母
     * @param chinese
     * @return
     */
    public static String toFirstChar(String chinese){
        String pinyinStr = "";
        char[] newChar = chinese.toCharArray();  //转为单个字符
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < newChar.length; i++) {
            if (newChar[i] > 128) {
                try {
                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            }else{
                pinyinStr += newChar[i];
            }
        }
        return pinyinStr;
    }

    public static void main(String[] args){
        System.out.println(toPinyin("是否按宽带标准收费(如100M/100元)"));
    }
}

 

标签:Java,拼音,chinese,newChar,pinyinStr,defaultFormat,工具,String
From: https://www.cnblogs.com/luoyihao/p/16896435.html

相关文章

  • VBA变量和函数名拼音输入提示
    VBA代码助手下载地址全球首发!VBA变量和函数名拼音输入提示!一直想做这个功能,从构想到实现,遇到了太多困难,不过随着代码行号研发过程中,我的个人技术得到极大提升,这个一直......
  • 关于 SAP UI5 控件内容的 Excel 导出功能,如何加载所需的导出工具库
    SAPUI5ExpreadSheet导出功能允许开发人员将数据导出到OfficeOpenXML电子表格。开发人员可以导出具有表格格式的任何类型的内容,例如表格或列表。如果使用SmartTab......
  • (笔者推荐)【Java权威指南】「官方文档-中英互译」AQS的源码注释分析,贯穿总体核心流程
    前提说明本文主要针对于Java官方文档中的先关的官方注释进行中英文互译,保证了源码坐着的设计思路以及相关知识技能介绍分析等,本文主要进行介绍AQS的源码官方注释的含义介绍,......
  • Javascript简单实现深拷贝
    利用递归方式遍历所有属性进行深层对象拷贝:functioncloneDeep(object){if(typeof(object)=='object'){if(Array.isArray(object)){......
  • java切图片圆角
    importxyz.laremehpe.FileUtil.FileChooser;importjavax.imageio.ImageIO;importjava.awt.*;importjava.awt.geom.Ellipse2D;importjava.awt.image.BufferedIma......
  • Java NIO和IO的区别
    1.IO是面向流的,NIO是面向缓冲区的。2.JavaIO的各种流是阻塞的,这就意味着,当一个线程调用read()或write()时,该线程被阻塞,直到有一些数据被读取。JavaNIO的非阻塞模式,使一个......
  • P1422 小玉家的电费(Java)
    题目描述夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在 150150......
  • Java引用类型参数传递
    结论:1)当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值2)当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会对实......
  • Elastic图形化管理工具-cerebro
    cerebro没有Kibana那么强大,但是部署起来极其简单且页面极其简洁。代码在GitHub存管:GitHub传统部署:GitHub容器部署:Docker部署:dockerrun-itd--namecerebro-p9......
  • 如何通过Java 在 Word 中更改字体颜色
    在Word文档中使用不同的字体颜色既可以丰富文档外观,也能突出强调某些重点部分。当Word文档包含大量内容时,可以使用FreeSpire.DocforJava轻松更改Word文档中的字体颜色。......