文档章节

pinyin4j

脑丨残
 脑丨残
发布于 2014/01/04 18:30
字数 590
阅读 256
收藏 11

    

pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com )。以下是一些具体的介绍和使用方式。

 

  1. pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/,目前最新的版本是2.5.0

  

 

  1. 下载解压后的目录结构及说明如下

(1)     doc : pinyin4japi文档

(2)     lib : pinyin4jjar

(3)     src : pinyin4j的源代码

(4)     CHANGELOG.txt : pinyin4j的版本更新日志

(5)     COPYING.txt : LICENSE说明

(6)     README.txt : pinyin4j的概要介绍

 

 

  1. 运行GUI demo

命令行执行cd ${pinyin-install-dir}/lib,进入到pinyin4j-2.5.0.jar所在的目录,敲入java -jar pinyin4j-2.5.0.jar执行,GUI界面如下:

  

     

 

上图是输入汉字“中”,执行Convert to Pinyin后的截图。Format后有三个下拉框,第一个下拉框有三个选项,用来控制生成的拼音声调的显示方式,三个方式及其效果如下(以汉字“中”,选中Formatted hanyu Pinyin选项卡测试)

WITH_TONE_NUMBER(以数字代替声调) :  zhong1  zhong4

WITHOUT_TONE (无声调) :                           zhong   zhong

WITH_TONE_MARK (有声调) :                      zhōng  zhòng

第二个下拉框是碰到unicode 的ü  u时的显示方式,共有三个方式, 以下是以声调为WITH_TONE_NUMBER方式显示汉字“吕”示例:

WITH_U_AND_COLON : lu:3

WITH_V :            lv3

WITH_U_UNICODE :    lü3

第三个下拉框是控制生成的拼音是以大写方式显示还是以小写方式显示,以汉字示例如下:

LOWERCASE guó

UPPERCASE GUÓ

上图的汉字转化成拼音后,有六种显示方式,这是因为pinyin4j支持将汉字转化成六种拼音表示法。其对应关系是:汉语拼音-Hanyu Pinyin,通用拼音-Tongyong Pinyin, 威妥玛拼音(威玛拼法)-Wade-Giles  Pinyin, 注音符号第二式-MPSII Pinyin, 耶鲁拼法-Yale Pinyin和国语罗马字-Gwoyeu Romatzyh 

 

  1. 字符串转化成拼音Java代码示例

 

[java:nogutter] view plaincopyprint?

package testcase;  
  
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 PinYinUtil {  
      
    public static String getPinYin(String inputString) {  
          
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
        format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);  
        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);  
  
        char[] input = inputString.trim().toCharArray();  
        StringBuffer output = new StringBuffer("");  
  
        try {  
            for (int i = 0; i < input.length; i++) {  
                if (Character.toString(input[i]).matches("[//u4E00-//u9FA5]+")) {  
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);  
                    output.append(temp[0]);  
                    output.append(" ");  
                } else  
                    output.append(Character.toString(input[i]));  
            }  
        } catch (BadHanyuPinyinOutputFormatCombination e) {  
            e.printStackTrace();  
        }  
        return output.toString();  
    }  
      
    public static void main(String[] args) {  
        String chs = "我是中国人! I'm Chinese!";  
        System.out.println(chs);  
        System.out.println(getPinYin(chs));  
    }  
      
}
    运行结果:我是中国人! I'm Chinese!
               wŏ sh&igrave; zhōng gu&oacute; r&eacute;n ! I'm Chinese!

本文转载自:http://blog.csdn.net/hfhwfw/article/details/6030816

共有 人打赏支持
脑丨残
粉丝 8
博文 60
码字总数 23267
作品 0
西安
Error:Execution failed for task ':app:transformRes

今天用上Android Studio2.0正式版,编译项目后出现如下错误:[plain] view plain copy 在CODE上查看代码片派生到我的代码片Error:Execution failed for task ':app:transformResourcesWithM...

丁佳辉
2016/06/22
13
0
MAVEN向本地仓库导入jar包

教程一: 对于官网没有的jar包,maven向本地仓库导入jar包用如下命令 Java代码 mvn install:install-file -DgroupId=包名 -DartifactId=项目名 -Dversion=版本号 -Dpackaging=jar -Dfile=jar...

jiyayun
2013/07/29
0
0
ajax提交编码问题

我用jquery ajax传给action一个字符串 希望用pinyin4j处理。pinyin4j貌似只能处理gbk,gb2312。但我的action中只接到了utf-8的。求解 1.怎么才能让action接到gbk编码的字符串 2.或者怎么将接...

Zawinski
2013/09/27
1K
8
Pinyin4j 的基本用法

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

鉴客
2011/09/11
8.6K
8
包含多音字的汉字字符串如何通过pinyin4J转换成拼音串

看了下pinyin4j实现了单个汉字转换成拼音的功能,如果我一次性输入多个包含多音字的汉字,如"大绿胖姥”,通过pinyin4J循环处理每个汉字字符,可得(da dai) (lv lu) (pang pan) (lao mu),那...

不懂就要问啊
2015/04/27
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
44分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
49分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
56分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
59分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部