`
yxgyh
  • 浏览: 274306 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java把汉字转拼音

    博客分类:
  • JAVA
阅读更多
/**  
 * 汉字转换位汉语拼音,英文字符不变  
 * @author xuke  
 *  
 */  
public class Cn2Spell {   
    
    /**  
    * 汉字转换位汉语拼音首字母,英文字符不变  
    * @param chines 汉字  
    * @return 拼音  
    */  
    public static String converterToFirstSpell(String chines){          
        String pinyinName = "";   
        char[] nameChar = chines.toCharArray();   
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
        for (int i = 0; i < nameChar.length; i++) {   
            if (nameChar[i] > 128) {   
                try {   
                    pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);   
                } catch (BadHanyuPinyinOutputFormatCombination e) {   
                    e.printStackTrace();   
                }   
            }else{   
                pinyinName += nameChar[i];   
            }   
        }   
        return pinyinName;   
    }   
    
    /**  
    * 汉字转换位汉语拼音,英文字符不变  
    * @param chines 汉字  
    * @return 拼音  
    */  
    public static String converterToSpell(String chines){           
        String pinyinName = "";   
        char[] nameChar = chines.toCharArray();   
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
        for (int i = 0; i < nameChar.length; i++) {   
            if (nameChar[i] > 128) {   
                try {   
                    pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];   
                } catch (BadHanyuPinyinOutputFormatCombination e) {   
                    e.printStackTrace();   
                }   
            }else{   
                pinyinName += nameChar[i];   
            }   
        }   
        return pinyinName;   
    }   
       
    public static void main(String[] args) {   
        System.out.println(converterToFirstSpell("欢迎来到最棒的Java中文社区"));   
    }   
}  

 

import java.util.HashSet;   
import java.util.Set;   
  
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 pinyin4j {   
    
 /**  
  * 字符串集合转换字符串(逗号分隔)  
  * @author wyh  
  * @param stringSet  
  * @return  
  */  
 public static String makeStringByStringSet(Set<String> stringSet){   
  StringBuilder str = new StringBuilder();   
  int i=0;   
  for(String s : stringSet){   
   if(i == stringSet.size() - 1){   
    str.append(s);   
   }else{   
    str.append(s + ",");   
   }   
   i++;   
  }   
  return str.toString().toLowerCase();   
 }   
    
 /**  
  * 获取拼音集合  
  * @author wyh  
  * @param src  
  * @return Set<String>  
  */  
 public static Set<String> getPinyin(String src){   
  if(src!=null && !src.trim().equalsIgnoreCase("")){   
   char[] srcChar ;   
   srcChar=src.toCharArray();   
   //汉语拼音格式输出类   
   HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();   
  
//输出设置,大小写,音标方式等   
   hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);    
   hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE)   
   hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);   
      
   String[][] temp = new String[src.length()][];   
   for(int i=0;i<srcChar.length;i++){   
    char c = srcChar[i];   
    //是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)   
    if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){   
     try{   
      temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);   
     }catch(BadHanyuPinyinOutputFormatCombination e) {   
      e.printStackTrace();   
     }   
    }else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){   
     temp[i] = new String[]{String.valueOf(srcChar[i])};   
    }else{   
     temp[i] = new String[]{""};   
    }   
   }   
   String[] pingyinArray = Exchange(temp);   
   Set<String> pinyinSet = new HashSet<String>();   
   for(int i=0;i<pingyinArray.length;i++){   
    pinyinSet.add(pingyinArray[i]);   
   }   
   return pinyinSet;   
  }   
  return null;   
 }   
    
 /**  
  * 递归  
  * @author wyh  
  * @param strJaggedArray  
  * @return  
  */  
    public static String[] Exchange(String[][] strJaggedArray){   
        String[][] temp = DoExchange(strJaggedArray);   
        return temp[0];          
    }   
      
    /**  
     * 递归  
     * @author wyh  
     * @param strJaggedArray  
     * @return  
     */  
    private static String[][] DoExchange(String[][] strJaggedArray){   
        int len = strJaggedArray.length;   
        if(len >= 2){              
            int len1 = strJaggedArray[0].length;   
            int len2 = strJaggedArray[1].length;   
            int newlen = len1*len2;   
            String[] temp = new String[newlen];   
            int Index = 0;   
            for(int i=0;i<len1;i++){   
                for(int j=0;j<len2;j++){   
                    temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];   
                    Index ++;   
                }   
            }   
            String[][] newArray = new String[len-1][];   
            for(int i=2;i<len;i++){   
                newArray[i-1] = strJaggedArray[i];                              
            }   
            newArray[0] = temp;   
            return DoExchange(newArray);   
        }else{   
         return strJaggedArray;      
        }   
    }   
      
 /**  
  * @param args  
  */  
 public static void main(String[] args) {   
  String str = "单田芳";   
  System.out.println(makeStringByStringSet(getPinyin(str)));   
  
}   
  
} 

 

控制台输出:dantianfang,shantianfang,chantianfang

分享到:
评论
14 楼 luowuping 2012-09-03  
怎么好多都是不正确。还是谢谢啦,
13 楼 DonTide 2012-09-03  
你牛,很想要这个东西。呵呵!谢谢分享。
12 楼 assoloist 2012-08-13  
高手!支持一下!
11 楼 DefallDevil 2012-06-11  
thanks,受益啦
10 楼 eyesurf 2012-05-28  
很实用,经常会用到
9 楼 wangjy 2012-03-07  
非常的好用,^_^
8 楼 xinming_me 2012-01-14  
楼主,人才啊。学习
7 楼 tianhandigeng 2011-12-07  
感觉不是那么准确,中文输入“成都”,转换成的是“chengdou”
6 楼 wst302 2011-11-16  
学习,正好用到
5 楼 derekkuo 2011-06-14  
感谢哦,能直接用上:)
4 楼 acegi13579 2011-06-02  
直接能运行、、呵呵、、、感谢分享
3 楼 379427555 2011-04-22  
好好好
好好好
好好好
好好好
好好好
好好好
好好好
好好好
好好好
2 楼 Zhliang 2010-05-13  
自动收索功能上能用到这些
1 楼 ldeng76 2009-10-31  
很有用,非常感谢分享.

相关推荐

    汉字转换拼音 java

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

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

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

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

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

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

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

    java中文转拼音

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

    java汉字转拼音源码

    java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音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编程语言中,将汉字转换为拼音是一项常见的任务,特别是在处理中文文本、搜索优化或者构建用户友好的URL时。这个“java后台汉字转拼音”的压缩包文件可能包含了一个简单的示例程序,演示如何实现这一功能。...

    java实现中文转拼音

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

    java将汉字转为拼音

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

    Java汉字转换为拼音工具类

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

    利用Java开源库把汉字转拼音

    pinyin4j是一个支持将中文转换到拼音的Java开源类库。 支持简体中文和繁体中文字符; 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字; 支持多音字,即可以获取一...

    Java实现中文转拼音.rar

    总结来说,“Java实现中文转拼音.rar”提供的工具类是一个便捷的Java解决方案,它能够帮助开发者将中文汉字转换为拼音。通过解压并运行`PinyinTest`,你可以快速验证其功能并集成到自己的项目中,为处理中文文本带来...

    java中汉字转拼音

    java中针对汉字的操作中有时需要对汉字进行转换成拼音,改工具类主要对汉字进行转换。

    JAVA 汉字转换拼音

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

    将汉字转换成拼音 java 源码

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

    java汉字转拼音

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

    java 汉字转成拼音

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

Global site tag (gtag.js) - Google Analytics