Pinyin4j实战
package com.haiyisoft.innovationcenter.pinyin; import org.junit.Test; import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; public class Pinyin4jTest { //pinyin4j格式类
private HanyuPinyinOutputFormat format = null;
//拼音字符串数组
private String[] pinyin;
//通过构造方法进行初始化
public Pinyin4jTest() {
format = new HanyuPinyinOutputFormat();
//设置转换拼音格式
/**
* TITHOUT_TONE:不带声调,例如:差:cha,cha,chai,ci
* WITH_TONE_MARK:不带声调(测试出现异常)
* WITH_U_UNICODE:带声调,使用数字表示声调,例如:差:cha1,cha4,chai1,ci1
*/
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
pinyin = null;
} //对单个字进行转换
public String getCharPinyin(char py) {
try {
pinyin = PinyinHelper.toHanyuPinyinStringArray(py, format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
//当转换的字符串不是汉字的时候就返回null
if(pinyin==null) {
return null;
}
//优化,把多音字放到同义词词典中
if(pinyin.length>1) {
for(String s : pinyin) {
//System.out.println(s);
}
}
//多音字会返回一个多音字拼音的数组,pinyin4j并不能有效判断该字的合适拼音
return pinyin[0];
}
//对字符串就行转换
public String getStringPinyin(String py) {
StringBuilder sb = new StringBuilder();
String temp = null;
//循环字符串
for(int i=0;i<py.length();i++) {
temp = this.getCharPinyin(py.charAt(i));
if(temp!=null) {
sb.append(temp);
}else {
sb.append(py.charAt(i));
}
}
return sb.toString();
}
@Test
public void test() {
char cha = '差';
String str = "出差去广州,go go !";
String chaPy = getCharPinyin(cha);
System.out.println(cha+"\n翻译成拼音为:"+chaPy);
String strPy = getStringPinyin(str);
System.out.println(str+"\n翻译成拼音为:"+strPy);
} }
结果:

分析:
在多音字方面确实存在不少问题,会导致在一些使用情况下出现异常!
Pinyin4j实战的更多相关文章
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- GitHub实战系列汇总篇
基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- redis epoll 原理梗概
redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统. redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量.为什么 Redis 中要使用 I/O 多路复用这 ...
- Hexo的next主题安装
通过Git+Hexo搭建的个人博客地址:https://liangh.top/ 1.使用git克隆最新版本 2.先在themes目录创建一个next文件夹,然后在hexo站点目录下右键打开Git Ba ...
- hdu 6086 -- Rikka with String(AC自动机 + 状压DP)
题目链接 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s ...
- Tomcat使用IDEA远程Debug调试
Tomcat运行环境:CentOS6.5.Tomcat7.0.IDEA 远程Tomcat设置 1.在tomcat/bin下的catalina.sh上边添加下边的一段设置 CATALINA_OPTS=& ...
- Kaggle-tiantic数据建模与分析
1.数据可视化 kaggle中数据解释:https://www.kaggle.com/c/titanic/data 数据形式: 读取数据,并显示数据信息 data_train = pd.read_cs ...
- Gradle中使用SpringBoot插件构建多模块遇到的问题
通常下,多模块的项目如下: Root project 'demospring' +--- Project ':model' \--- Project ':rest' 那么我们需要在rest模块依赖mo ...
- 树莓派2B+安装Debain操作系统
写在前面 本篇文章基于当前树莓派官方最新提供的Debain操作系统进行操作,Linux内核版本 4.14.71.本篇文章内容涵盖SD卡写入官方Debain操作系统,开启SSH连接,修改语言环境,改变当 ...
- MyBatis 分页之拦截器实现
分页是WEB程序中常见的功能,mybatis分页实现与hibernate不同,相比hibernate,mybatis实现分页更为麻烦.mybatis实现分页需要自己编写(非逻辑分页RowBounds) ...
- Docker实践:python应用容器化
一.前言 容器使用沙箱机制,互相隔离,优势在于让各个部署在容器的里的应用互不影响,独立运行,提供更高的安全性.本文主要介绍python应用(django)跑在docker容器里,编写dockerfil ...
- 利用cordova打包H5混合app
1.首先布置jdk环境,下载jdk(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...