`

[转]java汉字转拼音

    博客分类:
  • java
 
阅读更多

java汉字转拼音,主要是利用pinyin4j工具实现,有些场合,可能会用到汉字转换成拼音的功能,下面是具体的代码。 

 

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;
 
/**
 * java汉字转拼音操作工具类
 * @author sunlightcs
 * 2011-7-1
 * http://hi.juziku.com/sunlightcs
 *
 */
public class PinyingUtil {
 
    /**
     * 将字符串转换成拼音数组
     *
     * @param src
     * @return
     */
    public static String[] stringToPinyin(String src) {
        return stringToPinyin(src, false, null);
    }
    /**
     * 将字符串转换成拼音数组
     *
     * @param src
     * @return
     */
    public static String[] stringToPinyin(String src,String separator) {
        return stringToPinyin(src, true, separator);
    }
 
    /**
     * 将字符串转换成拼音数组
     *
     * @param src
     * @param isPolyphone
     *            是否查出多音字的所有拼音
     * @param separator
     *            多音字拼音之间的分隔符
     * @return
     */
    public static String[] stringToPinyin(String src, boolean isPolyphone,
            String separator) {
        // 判断字符串是否为空
        if ("".equals(src) || null == src) {
            return null;
        }
        char[] srcChar = src.toCharArray();
        int srcCount = srcChar.length;
        String[] srcStr = new String[srcCount];
 
        for (int i = 0; i < srcCount; i++) {
            srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);
        }
        return srcStr;
    }
 
    /**
     * 将单个字符转换成拼音
     *
     * @param src
     * @return
     */
    public static String charToPinyin(char src, boolean isPolyphone,
            String separator) {
        // 创建汉语拼音处理类
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        // 输出设置,大小写,音标方式
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
 
        StringBuffer tempPinying = new StringBuffer();
         
 
        // 如果是中文
        if (src > 128) {
            try {
                // 转换得出结果
                String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,
                        defaultFormat);
                 
                         
                // 是否查出多音字,默认是查出多音字的第一个字符
                if (isPolyphone && null != separator) {
                    for (int i = 0; i < strs.length; i++) {
                        tempPinying.append(strs[i]);
                        if (strs.length != (i + 1)) {
                            // 多音字之间用特殊符号间隔起来
                            tempPinying.append(separator);
                        }
                    }
                } else {
                    tempPinying.append(strs[0]);
                }
 
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
        } else {
            tempPinying.append(src);
        }
 
        return tempPinying.toString();
 
    }
 
     
    public static String hanziToPinyin(String hanzi){
        return hanziToPinyin(hanzi," ");
    }
    /**
     * 将汉字转换成拼音
     * @param hanzi
     * @param separator
     * @return
     */
    @SuppressWarnings("deprecation")
    public static String hanziToPinyin(String hanzi,String separator){
            // 创建汉语拼音处理类
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            // 输出设置,大小写,音标方式
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
             
            String pinyingStr="";
            try {
                pinyingStr=PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat, separator);
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }  
            return pinyingStr;
    }
    /**
     * 将字符串数组转换成字符串
     * @param str
     * @param separator 各个字符串之间的分隔符
     * @return
     */
    public static String stringArrayToString(String[] str, String separator) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length; i++) {
            sb.append(str[i]);
            if (str.length != (i + 1)) {
                sb.append(separator);
            }
        }
        return sb.toString();
    }
    /**
     * 简单的将各个字符数组之间连接起来
     * @param str
     * @return
     */
    public  static String stringArrayToString(String[] str){
        return stringArrayToString(str,"");
    }
    /**
     * 将字符数组转换成字符串
     * @param str
     * @param separator 各个字符串之间的分隔符
     * @return
     */
    public static String charArrayToString(char[] ch, String separator) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < ch.length; i++) {
            sb.append(ch[i]);
            if (ch.length != (i + 1)) {
                sb.append(separator);
            }
        }
        return sb.toString();
    }
     
    /**
     * 将字符数组转换成字符串
     * @param str
     * @return
     */
    public static String charArrayToString(char[] ch) {
        return charArrayToString(ch," ");
    }
 
    /**
     * 取汉字的首字母
     * @param src
     * @param isCapital 是否是大写
     * @return
     */
    public static char[]  getHeadByChar(char src,boolean isCapital){
        //如果不是汉字直接返回
        if (src <= 128) {
            return new char[]{src};
        }
        //获取所有的拼音
        String []pinyingStr=PinyinHelper.toHanyuPinyinStringArray(src);
        //创建返回对象
        int polyphoneSize=pinyingStr.length;
        char [] headChars=new char[polyphoneSize];
        int i=0;
        //截取首字符
        for(String s:pinyingStr){
            char headChar=s.charAt(0);
            //首字母是否大写,默认是小写
            if(isCapital){
                headChars[i]=Character.toUpperCase(headChar);
             }else{
                headChars[i]=headChar;
             }
            i++;
        }
         
        return headChars;
    }
    /**
     * 取汉字的首字母(默认是大写)
     * @param src
     * @return
     */
    public static char[]  getHeadByChar(char src){
        return getHeadByChar(src,true);
    }
    /**
     * 查找字符串首字母
     * @param src
     * @return
     */
    public  static String[] getHeadByString(String src){
        return getHeadByString( src, true);
    }
    /**
     * 查找字符串首字母
     * @param src
     * @param isCapital 是否大写
     * @return
     */
    public  static String[] getHeadByString(String src,boolean isCapital){
        return getHeadByString( src, isCapital,null);
    }
    /**
     * 查找字符串首字母
     * @param src
     * @param isCapital 是否大写
     * @param separator 分隔符
     * @return
     */
    public  static String[] getHeadByString(String src,boolean isCapital,String separator){
        char[]chars=src.toCharArray();
        String[] headString=new String[chars.length];
        int i=0;
        for(char ch:chars){
             
            char[]chs=getHeadByChar(ch,isCapital);
            StringBuffer sb=new StringBuffer();
            if(null!=separator){
                int j=1;
                 
                for(char ch1:chs){
                    sb.append(ch1);
                    if(j!=chs.length){
                        sb.append(separator);
                    }
                    j++;
                }
            }else{
                sb.append(chs[0]);
            }
            headString[i]=sb.toString();
            i++;
        }
        return headString;
    }
     
    public static void main(String[] args) {
        System.out.println(hanziToPinyin("是否大写",""));
    }
 
}

原文链接:http://www.juziku.com/sunlightcs/wiki/2467.htm 

注意:要用到的jar 

分享到:
评论

相关推荐

    java汉字转拼音源码

    java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java...

    java中文转拼音

    ### Java程序实现中文转拼音及首字母转换 #### 概述 在中文处理领域,将汉字转换为拼音是一项常见的需求,特别是在搜索引擎、自然语言处理、数据标准化等应用场景中。本文介绍了一个简单的Java类`ChineseToEnglish...

    汉字转换拼音 java

    对于`JAVA汉字转换拼音`,你可以查看源代码,学习作者是如何实现汉字转换拼音的,并根据实际需求进行修改或扩展。 总之,Java中实现汉字转换拼音的功能并不复杂,关键在于选择合适的库和正确地调用其API。Pinyin4j...

    java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII

    以上就是关于“java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII”的技术要点。在实际应用中,根据需求选择合适的转换方式,并注意处理可能出现的异常情况,如多音字、非ASCII字符等。在处理大量...

    Java汉字转拼音(支持多音字)

    这个"Java汉字转拼音(支持多音字)"的主题涉及了如何在Java环境中实现这一功能,特别是考虑到中文的多音字特性。 多音字是指一个汉字有多个读音,其读音取决于它在特定语境中的含义。例如,“打”字可以读作“dǎ...

    java 汉字转换拼音

    根据提供的文件信息,本文将详细解析“Java汉字转换拼音”的实现方法及原理,并结合实际代码进行分析。 ### 一、项目概述 #### 标题:Java汉字转换拼音 该标题明确指出项目的主要功能是利用Java语言实现汉字到拼音...

    汉字转拼音(java)

    汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)汉字转拼音(java)...

    java汉字转拼音(全拼和首字母)

    在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...

    汉字转拼音JAVA

    汉字转拼音JAVA

    将汉字转换成拼音 java 源码

    - **Pinyin4j** 是一个强大的Java库,主要用于将中文汉字转换为拼音,同时支持多种配置选项来调整输出格式。 - 这个库提供了一系列工具类和枚举类型来帮助开发者定制拼音的输出方式,例如是否带有声调、拼音首字母大...

    java汉字转拼音

    总的来说,Java汉字转拼音是处理中文文本的关键技术之一,它涉及了字符编码、自然语言处理和库的使用。通过使用现有的开源库,开发者可以轻松地在Java项目中实现这一功能,从而满足各种应用场景的需求。

    java 中文转换拼音

    在Java编程语言中,中文字符转换为拼音是一个常见的需求,特别是在处理中文文本的搜索、语音合成或者数据分析等场景。这个给定的压缩包文件“languageConvert”可能包含了一个实现此功能的Java程序,使得开发者能够...

    汉字转拼音、首字母、多音字java

    总的来说,Java中的汉字转拼音、首字母获取以及多音字处理主要依赖于像`pinyin4j`这样的第三方库,它们提供了丰富的功能,使得开发者能方便地进行中文字符的拼音处理。在实际项目中,正确理解和运用这些工具,可以...

    JAVA 汉字转换拼音

    总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...

    Java汉字转换为拼音工具类

    Java汉字转换为拼音工具类 汉字转换为拼音包括全拼、首字母缩写;全拼可计算出多音字。

    java 汉字转成拼音

    "j2ee精英团队10年编程精华大放送"表明这个压缩包可能包含了该团队在Java汉字转拼音领域积累的宝贵经验和实用工具。 首先,我们要了解Java中的汉字转拼音的基本原理。通常,这涉及到读取汉字字符并使用预定义的映射...

    java将汉字转为拼音

    本篇文章将详细探讨如何在Java中实现汉字转拼音,并给出相关代码示例。 首先,Java的标准库并没有直接提供汉字转拼音的API,但可以通过第三方库来实现。其中一个广泛应用的库是Pinyin4j,它是一个轻量级的Java库,...

    Java汉字转换拼音

    总的来说,Java汉字转换拼音主要依赖于第三方库,如`pinyin4j`,通过这些库提供的接口和方法,我们可以方便地实现汉字到拼音的转换,并根据实际需求进行相应的处理。在开发过程中,注意选择适合项目需求的库,并充分...

    java 取汉字拼音工具包

    Java中的汉字拼音工具包主要服务于程序开发,尤其是前端开发,用于处理汉字与拼音之间的转换,这对于构建具有中文支持的应用或网站至关重要。这类工具包能够帮助开发者轻松地将汉字转换为对应的拼音,便于进行搜索、...

    java实现中文转拼音

    本文将详细介绍如何使用Java实现中文转拼音的功能,并探讨相关的技术点。 首先,Java中实现中文转拼音主要依赖于第三方库,如Pinyin4j或HanyuPinyin等。Pinyin4j是一个广泛使用的Java库,它提供了方便的方法来获取...

Global site tag (gtag.js) - Google Analytics