文档章节

使用pinyin4j将汉字转换成拼音

DENGJM
 DENGJM
发布于 2015/08/26 14:23
字数 150
阅读 135
收藏 6

Maven引入依赖:

<dependency>
  <groupId>com.belerweb</groupId>
  <artifactId>pinyin4j</artifactId>
  <version>2.5.0</version>
</dependency>

自己封装了一个工具类:

package com.ylmob.yunpay.util.pinyin;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author DJM
 */
public class HanyuPinyinUtil {
    
    Logger logger = LoggerFactory.getLogger(HanyuPinyinUtil.class);
    
    private HanyuPinyinUtil(){
    }
    
    public static HanyuPinyinUtil getInstance(){
        return new HanyuPinyinUtil();
    }
    
    public String toPinyin(String chineseCharacter){
        String pinyin = "";
        for(Character chara: chineseCharacter.toCharArray()){
            logger.info("The character is {}.", chara);
            Pattern pt = Pattern.compile("[\\u4e00-\\u9fa5]+");
            Matcher mt = pt.matcher(chara.toString());
            if(mt.matches()){
                logger.info("The character {} is match.", chara);
                HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
                format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
                String[] hyArr = null;
                try {
                    hyArr = PinyinHelper.toHanyuPinyinStringArray(chara, format);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
                pinyin = pinyin.concat(hyArr[0]);
            }else{
                //过滤空白字符
                Pattern blankPt = Pattern.compile("\\s+"); 
                Matcher blankMt = blankPt.matcher(chara.toString());
                if(!blankMt.matches()){
                    pinyin = pinyin.concat(chara.toString());
                }
            }
        }
        return pinyin;
    }
    
}


© 著作权归作者所有

共有 人打赏支持
DENGJM
粉丝 8
博文 53
码字总数 30131
作品 0
杭州
后端工程师
Pinyin4j 的基本用法

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

鉴客
2011/09/11
8.6K
8
汉字转拼音工具JPinyin的介绍和使用示例

汉字转拼音的开源工具类包,已经出现过好几个,比如:Pinyin4J、Jpinyin等。本文主要结合JPinyin汉字转拼音的Java开源类库,给出相关的介绍和使用示例。 Jpinyin介绍 JPinyin是一个汉字转拼音...

王孟君
2016/11/13
1K
5
包含多音字的汉字字符串如何通过pinyin4J转换成拼音串

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

不懂就要问啊
2015/04/27
1K
3
汉字转拼音的Java类库--JPinyin

JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。 【JPinyin主要特性】 1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPi...

Jayer
2013/05/15
12K
11
汉字转拼音

1、目前在百度或谷歌上搜索“java汉字转拼音”,主要有以下三种: 1)piny4j:搜索结果介绍文章最多的,然而此类库对生僻字支持不好,转换时会报空指针(java.lang.NullPointerException)错...

小谷xg
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
12分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
25分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
25分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
30分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部