`

Pinyin4j的基本用法

    博客分类:
  • J2EE
 
阅读更多

1. 简单介绍

有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音“caomengde”各字的首字母。但是怎样才能将“曹孟德”翻译成“caomengde”呢?很简单的办法就是建立一个大的对照表(比如用关联容器Map),比如<”曹”,”cao”>,<” 孟”,”meng”>,<” 德”,”de”>…但这样的做法,需要维护好一个比较大的对照表,同时一个汉字可能有多个发音,也就是说Map这样的容器时不行的,因为其<key,value>必须是一一对应的。在C++中可以用STL里面的multimap来解决这个问题,但Java中没有类似multimap这样的东西,除非自己实现一个。

Pinyin4j就是为了解决类似这样的问题的。它是sourceforge.net上的一个开源项目,功能非常强大:

+ 支持同一汉字有多个发音

+ 还支持拼音的格式化输出,比如第几声之类的,

+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载:

http://pinyin4j.sourceforge.net/

 

2. 基本用法:

通常情况下,只需要用到其中的PinyinHelper类中的静态方法toHanyuPinyinStringArray就可以了,比如:

 

String[] pinyinArray =PinyinHelper.toHanyuPinyinStringArray('单');
for(int i = 0; i < pinyinArray.length; ++i)
{
         System.out.println(pinyinArray[i]);
}

 

 

就会输出:

dan1

chan2

shan4

这三种发音,后面的数字代表第几声。可以看到静态方法toHanyuPinyinStringArray返回的数据类型是一个String数组,它用来接收一个汉字的多个发音,如果toHanyuPinyinStringArray中的参数不是汉字,那么它会返回null。

3.格式支持

Pinyin4j支持拼音输出的格式化,比如,“黄”可以输出为“huang”、“huang2”、“huáng”等等,下面的代码就似是输出“huáng”的示例:

 

HanyuPinyinOutputFormat format= new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
                  
String[] pinyinArray = null;
try
{
         pinyinArray = PinyinHelper.toHanyuPinyinStringArray('黄', format);
}
catch(BadHanyuPinyinOutputFormatCombination e)
{
         e.printStackTrace();
}
for(int i = 0; i < pinyinArray.length; ++i)
{
         System.out.println(pinyinArray[i]);
}

 

 

此外,还支持大小写转换、ü等等。详细情况,可以查看Pinyin4j自带的文档。

4.实际示例代码

如果我们要将一段文字中的汉字全部转换成不带音调的拼音输出,而这段文字中又可能包含阿拉伯数字、英文、标点符号等等。如果完全靠自己写代码进行转换,那是非常麻烦的,其中一个首先就要区别,这段文字中那些是汉字,那些是非汉字。有了Pinyin4j,这个问题就不再困难了,因为对于非汉字,Pinyin4j会自动输出null。参考下面的示例代码:

 

importnet.sourceforge.pinyin4j.*;
importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;
importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 
public class Chinese2PY
{
         public static void main(String[] args)
         {       
                   Hanyu hanyu = new Hanyu();
                   // 中英文混合的一段文字
                   String str = "荆溪白石出,Hello 天寒红叶稀。Android 山路元无雨,What's up?   空翠湿人衣。";
                   String strPinyin = hanyu.getStringPinYin(str);
                   System.out.println(strPinyin);
         }
}
 
class Hanyu
{
         private HanyuPinyinOutputFormat format = null;
         private String[] pinyin;
        
         public Hanyu()
         {
                   format = new HanyuPinyinOutputFormat();
                   format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
                  
                   pinyin = null;
         }
        
         //转换单个字符
         public String getCharacterPinYin(char c)
         {
                   try
                   {
                            pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
                   }
                   catch(BadHanyuPinyinOutputFormatCombination e)
                   {
                            e.printStackTrace();
                   }
                  
                   // 如果c不是汉字,toHanyuPinyinStringArray会返回null
                   if(pinyin == null) return null;
                  
                   // 只取一个发音,如果是多音字,仅取第一个发音
                   return pinyin[0];   
         }
        
         //转换一个字符串
         public String getStringPinYin(String str)
         {
                   StringBuilder sb = new StringBuilder();
                   String tempPinyin = null;
                   for(int i = 0; i < str.length(); ++i)
                   {
                            tempPinyin =getCharacterPinYin(str.charAt(i));
                            if(tempPinyin == null)
                            {
                                     // 如果str.charAt(i)非汉字,则保持原样
                                     sb.append(str.charAt(i));
                            }
                            else
                            {
                                     sb.append(tempPinyin);
                            }
                   }
                   return sb.toString();
         }
}

 

 

输出结果:

jingxibaishichu,Hellotianhanhongyexi。Android shanluyuanwuyu,What'sup? kongcuishirenyi。

 

原文地址:http://blog.csdn.net/pathuang68/article/details/6692882

分享到:
评论

相关推荐

    pinyin4j.zip pinyin4j.jar

    Pinyin4j的使用方法简单直观。首先,你需要将提供的`pinyin4j.jar`文件引入到你的项目类路径中。然后,你可以通过`net.sourceforge.pinyin4j.PinyinHelper`类来调用各种转换方法。例如,使用`...

    Pinyin4j的基本用法 - 玄机逸士的专栏 - 博客频道 - CSDN.NET.html

    Pinyin4j的基本用法 - 玄机逸士的专栏 - 博客频道 - CSDN.NET.html )

    pinyin4j-2.5.0.jar下载

    使用pinyin4j的基本步骤如下: 1. 引入库:在Java代码中,通过`import net.sourceforge.pinyin4j.PinyinHelper;`导入必要的类。 2. 转换汉字:使用`PinyinHelper.toHanyuPinyinStringArray(char)`方法,传入一个...

    pinyin4j-2.5.1.jar

    了解了pinyin4j库的基本用法和可能出现的问题后,我们可以进一步探讨其核心功能。pinyin4j提供了`PinyinHelper`类,该类包含了一系列静态方法,如`toHanyuPinyinStringArray()`和`toHanyuPinyinStringWithToneMark()...

    pinyin4j-2.5.0.zip

    首先,我们来了解一下pinyin4j的基本用法。在Java代码中,你可以通过创建`PinyinHelper`对象并调用其方法,如`toHanyuPinyinStringArray()`,将单个汉字转换为拼音数组。这个过程不仅支持普通汉字,还能够处理多音字...

    pinyin4j-2.5.0.jar

    在压缩包中,附带的`PinyinUtils.java`是一个使用示例,它展示了如何在实际项目中集成和使用pinyin4j。这个示例文件通常包含了初始化、转换和处理结果的基本步骤,对于初学者来说,是一个很好的学习起点。通过阅读和...

    pinyin4j-2.5.0.jar+使用说明+使用代码

    本文将详细探讨pinyin4j-2.5.0.jar这个Java汉字转拼音的jar包,包括其核心功能、使用方法以及实际应用中的示例代码。 一、pinyin4j概述 pinyin4j是一个轻量级的Java库,它提供了高效且灵活的汉字转拼音功能。该库...

    pinyin4j 开发jar包

    本文将详细介绍pinyin4j的核心功能、使用方法及其在实际开发中的应用。 一、pinyin4j简介 pinyin4j是由Liu Jiangyong开发的一款开源Java库,主要功能是将汉字转换为汉语拼音。它支持多种拼音表示方式,包括全拼、...

    pinyin4j所需jar包

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

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

    本文将详细介绍pinyin4j库及其使用方法。 pinyin4j是一个轻量级的Java库,专门用于将汉字转换为汉语拼音。它支持简体中文和繁体中文的转换,能够处理单个汉字、词语甚至整个句子。该库由Barry S. Wang开发,并在...

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

    通常,使用pinyin4j的步骤包括导入jar包,创建`PinyinHelper`对象,然后调用`toHanyuPinyinStringArray()`等方法进行转换。例如,`PinyinHelper.toHanyuPinyinStringArray('中')`会返回一个包含“Zhong”和“Zong”...

    pinyin4j的使用代码实例

    以上就是使用pinyin4j进行汉字拼音转换的基本用法。通过这个库,我们可以方便地处理汉字与拼音之间的转换,极大地简化了开发过程。在实际项目中,可以根据具体需求灵活运用这些功能,提升程序的智能化和用户体验。

    pinyin4j工具类和jar包

    Pinyin4j的基本用法 1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”...

    pinyin4j jar包

    在Pinyin4j中,`Pinyin4jUtils`是一个非常实用的工具类,它封装了一些基本的转换方法,使得开发者无需深入了解内部实现,就可以方便地进行汉字到拼音的转换。例如,`toPinyinString(char[] chars)`方法可以将一个...

    pinyin4j.jar

    本文将详细介绍Pinyin4j的核心功能、使用方法以及其在实际应用中的价值。 Pinyin4j库的核心功能在于提供汉字到拼音的高效转换,它能够支持简体和繁体汉字,并且可以根据需求输出不同格式的拼音,如全拼、缩写、声调...

    pinyin4j 拼音排序

    本文将深入探讨pinyin4j库的使用方法以及在汉字拼音排序中的应用。 一、pinyin4j简介 pinyin4j是Java平台上的一个开源项目,由Barry de Zaayter开发,主要功能是将汉字转换为对应的拼音,支持声母、韵母、声调等...

    通过首字母查询pinyin4j-2.5.0 jar包及使用方法

    《通过首字母查询pinyin4j-2.5.0 jar包及使用方法》 在中文处理领域,拼音转换是一个常见的需求,特别是在编程环境中,如Java。pinyin4j库是一个专门为Java设计的开源库,它能将汉字转换为拼音,帮助我们实现基于...

    pinyin4j jar包 附带 例子

    同时,提供的`GetPinyin.java`示例代码可以帮助我们更好地理解和使用pinyin4j。通过阅读和运行这个示例,我们可以学习如何导入jar包,创建对象,以及调用方法来实现汉字转拼音的功能。例如,`GetPinyin`类可能包含了...

    pinyin4j-2.5.0

    除了基本的转换功能,pinyin4j还提供了其他高级功能,如设置拼音输出格式(首字母、全拼等)、处理特殊字符(如隔音符号、标点等)以及对汉字序列进行排序。这些功能使得pinyin4j在处理中文数据时具有极高的灵活性。...

    使用pinyin4j实现中文全拼例子netbeans

    使用pinyin4j实现中文全拼的基本步骤如下: 1. 引入必要的包: ```java import com.belerweb.pinyin4j.PinyinHelper; import com.belerweb.pinyin4j.format.HanyuPinyinCaseType; import ...

Global site tag (gtag.js) - Google Analytics