`
3806850
  • 浏览: 93558 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

pinyin4j简介【转】

    博客分类:
  • java
阅读更多
pinyin4j的主页:http://pinyin4j.sourceforge.net/

pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。

pinyin4j是一个支持将中文转换到拼音的Java开源类库。

支持简体中文和繁体中文字符;
支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字;
支持多音字,即可以获取一个中文字符的多种发音;
支持多种字符串输出格式,比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。
特征:

1. 支持多种拼音系统:

汉语拼音
通用拼音
威氏拼音
注音二式
雅礼
国语罗马字
2. 支持多音字

    能够根据上下文获得正确的拼音

3. 支持多种拼音格式

大小写
支持unicode ü 、v 和 u
支持数字音调(lü3)、音调符号 (lǚ)和无音调标识(lü)
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 Pinyin
{
/**
* 将汉字转换为全拼
* 
* @param src
* @return String
*/
public static String getPinYin(String src)
{
   char[] t1 = null;
   t1 = src.toCharArray();
   // System.out.println(t1.length);
   String[] t2 = new String[t1.length];
   // System.out.println(t2.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++)
    {
     // 判断能否为汉字字符
     // System.out.println(t1[i]);
     if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+"))
     {
      t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
      t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
     }
     else
     {
      // 如果不是汉字字符,间接取出字符并连接到字符串t4后
      t4 += Character.toString(t1[i]);
     }
    }
   }
   catch (BadHanyuPinyinOutputFormatCombination e)
   {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return t4;
}

/**
* 提取每个汉字的首字母
* 
* @param str
* @return String
*/
public static String getPinYinHeadChar(String str)
{
   String convert = "";
   for (int j = 0; j < str.length(); j++)
   {
    char word = str.charAt(j);
    // 提取汉字的首字母
    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
    if (pinyinArray != null)
    {
     convert += pinyinArray[0].charAt(0);
    }
    else
    {
     convert += word;
    }
   }
   return convert;
}

/**
* 将字符串转换成ASCII码
* 
* @param cnStr
* @return String
*/
public static String getCnASCII(String cnStr)
{
   StringBuffer strBuf = new StringBuffer();
   // 将字符串转换成字节序列
   byte[] bGBK = cnStr.getBytes();
   for (int i = 0; i < bGBK.length; i++)
   {
    // System.out.println(Integer.toHexString(bGBK[i] & 0xff));
    // 将每个字符转换成ASCII码
    strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
   }
   return strBuf.toString();
}

public static void main(String[] args)
{
   String cnStr = "嘅囧誰說壞學生來勼髮視頻裆児";
   System.out.println(getPinYin(cnStr));
   System.out.println(getPinYinHeadChar(cnStr));
   System.out.println(getCnASCII(cnStr));
}
}
实例:

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

最近做的项目,因为下拉框中的项目太多,需要有个过滤的方法。我想的是键入汉语拼音首字母即时过滤下拉内容。

在网上找了好一会,发现了有个专门用来将中文转换成汉语拼音的Java的开源库,Pinyin4j,

下载地址:pinyin4j-2.5.0.zip

基本用法,如下示例

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中文社区"));    
     }    
}   
/**
 * 汉字转换位汉语拼音,英文字符不变
 * @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中文社区"));
 }
}
以上一个是完全转换成汉语拼音的,另一个是只转换首字母的,遇到ASCII字符都不转换,保留。

分享到:
评论

相关推荐

    pinyin4j.zip pinyin4j.jar

    由于Android系统本身的局限性,原生SDK并不提供汉字转拼音的功能,而Pinyin4j作为一个轻量级的库,能够轻松集成到Android项目中,用于实现诸如汉字排序、关键词搜索、拼音输入法等功能。通过使用Pinyin4j,开发者...

    中文转拼音工具类,pinyin4j-2.5.0.jar 适用于地址人名

    《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...

    汉语转换成拼音的jar包pinyin4j-2.5.0版本

    `pinyin4j`库的使用并不复杂,但它的功能强大,可以满足大部分汉语转拼音的需求。在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的...

    pinyin4j jar包

    1. **汉字转拼音**:pinyin4j可以将单个汉字或字符串中的所有汉字转化为对应的拼音。它支持多种输出格式,如全拼、简拼、声母、韵母等。此外,它还能处理多音字,根据上下文提供最合适的读音。 2. **声调处理**:...

    pinyin4j-2.5.0

    《pinyin4j-2.5.0:Java实现的汉语拼音转换库》 在Java开发中,有时候我们需要将汉字转换成对应的汉语拼音,以便进行各种处理,如搜索、排序或者处理多音字问题。这时,`pinyin4j-2.5.0`这个开源库就显得尤为重要。...

    pinyin4j最新jar包,汉字转pinyin必备

    《pinyin4j:汉字转拼音的利器》 在处理汉字到拼音转换的场景中,pinyin4j是一个不可或缺的工具。它是一个Java库,专为处理汉字转换为拼音而设计,尤其适用于需要进行中文信息处理、搜索引擎优化、或者任何需要汉字...

    pinyin4j-2.5.0-API文档-中文版.zip

    赠送jar包:pinyin4j-2.5.0.jar; 赠送原API文档:pinyin4j-2.5.0-javadoc.jar; 赠送源代码:pinyin4j-2.5.0-sources.jar; 赠送Maven依赖信息文件:pinyin4j-2.5.0.pom; 包含翻译后的API文档:pinyin4j-2.5.0-...

    pinyin4j-2.5.0.jar下载

    "pinyin4j-2.5.0.jar"就是这样一款高效且易用的工具,它专为Java和Kotlin设计,提供了强大的汉字转拼音功能。 pinyin4j是一款开源的Java库,由Barry De Zwart开发,其主要功能是将汉字转换为汉语拼音。这个库不仅...

    pinyin4j-2.5.0.jar 下载 java汉字转拼音 jar包 附带超级简单小dome

    《pinyin4j-2.5.0.jar:Java实现汉字转拼音的高效工具》 在信息化时代,处理中文字符成为许多开发者的必备技能。在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、...

    pinyin4j 开发jar包

    一、pinyin4j简介 pinyin4j是由Liu Jiangyong开发的一款开源Java库,主要功能是将汉字转换为汉语拼音。它支持多种拼音表示方式,包括全拼、简拼、声母、韵母等,同时也能够处理多音字和不常见的汉字,极大地扩展了...

    pinyin4j pinyin4j

    Pinyin4j能识别并返回每个汉字的正确声调,如"ma"(一声)、"mā"(二声)、"ma"(三声)、"mà"(四声)。 3. **多音字处理**:对于有多个读音的汉字,Pinyin4j能够提供所有可能的拼音,如"行"(xíng、háng)。 ...

    pinyin4j(解决多音字问题源码)

    《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...

    pinyin4j-2.5.0.jar

    《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...

    pinyin4j-2.5.0.zip

    《pinyin4j:汉字转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在软件开发领域。对于Java开发者来说,pinyin4j是一个不可或缺的工具包,它专门用于将汉字转换为拼音,从而解决了...

    将简体中文和繁体中文转换拼音的jar包 pinyin4j-2.5.0.jar

    《使用pinyin4j库进行中文到拼音转换的详解》 在处理中文字符时,有时我们需要将汉字转换为对应的拼音,以便进行各种文本处理任务,如搜索引擎优化、文本分析或语音合成。在这种情况下,Java开发者可以利用开源库...

    pinyin4j-2.5.1.jar

    pinyin4j是一个专门用于Java平台的中文字符转拼音的开源库,它的版本为2.5.1,是开发者处理中文字符转换为拼音的重要工具。该库由net.sourceforge.pinyin4j包提供,包含了丰富的类和方法,能够帮助开发者方便地获取...

    net.sourceforge.pinyin4j.zip

    《Pinyin4j工具包详解:汉字转拼音的利器》 在处理中文数据时,我们经常需要将汉字转换为拼音,以便进行各种处理,如排序、搜索或建立索引。这时,一个强大的工具包——net.sourceforge.pinyin4j就显得尤为重要。这...

    pinyin4j.jar中文转拼音及多音字配置文件

    Java pinyin4j.jar中文转拼音 详细可查看我的博客https://me.csdn.net/Extraordinarylife 中《Java pinyin4j.jar中文转拼音 》

    pinyin4j所需jar包

    《深入理解pinyin4j库及其使用》 在Java编程中,处理中文字符尤其是转换为拼音的任务时常出现。为了高效地解决这个问题,开发者们通常会借助于特定的库,其中pinyin4j就是一个广泛使用的开源工具。本文将详细介绍...

Global site tag (gtag.js) - Google Analytics