汉字转成拼音如果自己实现起来有点麻烦,主要是怕有些汉字转不了,所以就准备使用一个开源的工具Pinyin4j.
pinyin4j是一个支持将中文转换到拼音的Java开源类库,pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。pinyin4j的主页:http://pinyin4j.sourceforge.net/
1. 支持简体中文和繁体中文字符;
2. 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字;
3. 支持多音字,即可以获取一个中文字符的多种发音;
4. 支持多种字符串输出格式,比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。
为了方便大家使用,我将源文件和jar包一并放上来了,欢迎大家下载。
废话少说,下面是我建立的一个通用类,有什么不足的地方希望大家指正。
package com.xyj.com.tool.util;
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.exception.BadHanyuPinyinOutputFormatCombination;
/**
* @className:PinyingUtil.java
* @classDescription:拼音操作工具类
* @author:xiayingjie
* @createTime:2010-10-21
*/
public class PinyingUtil {
/**
* 将字符串转换成拼音数组
*
* @param src
* @return
*/
public static String[] stringToPinyin(String src) {
return stringToPinyin(src, false, null);
}
/**
* 将字符串转换成拼音数组
*
* @param src
* @return
*/
public static String[] stringToPinyin(String src,String separator) {
return stringToPinyin(src, true, separator);
}
/**
* 将字符串转换成拼音数组
*
* @param src
* @param isPolyphone
* 是否查出多音字的所有拼音
* @param separator
* 多音字拼音之间的分隔符
* @return
*/
public static String[] stringToPinyin(String src, boolean isPolyphone,
String separator) {
// 判断字符串是否为空
if ("".equals(src) || null == src) {
return null;
}
char[] srcChar = src.toCharArray();
int srcCount = srcChar.length;
String[] srcStr = new String[srcCount];
for (int i = 0; i < srcCount; i++) {
srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);
}
return srcStr;
}
/**
* 将单个字符转换成拼音
*
* @param src
* @return
*/
public static String charToPinyin(char src, boolean isPolyphone,
String separator) {
// 创建汉语拼音处理类
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 输出设置,大小写,音标方式
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
StringBuffer tempPinying = new StringBuffer();
// 如果是中文
if (src > 128) {
try {
// 转换得出结果
String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,
defaultFormat);
// 是否查出多音字,默认是查出多音字的第一个字符
if (isPolyphone && null != separator) {
for (int i = 0; i < strs.length; i++) {
tempPinying.append(strs[i]);
if (strs.length != (i + 1)) {
// 多音字之间用特殊符号间隔起来
tempPinying.append(separator);
}
}
} else {
tempPinying.append(strs[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
tempPinying.append(src);
}
return tempPinying.toString();
}
public static String hanziToPinyin(String hanzi){
return hanziToPinyin(hanzi," ");
}
/**
* 将汉字转换成拼音
* @param hanzi
* @param separator
* @return
*/
public static String hanziToPinyin(String hanzi,String separator){
// 创建汉语拼音处理类
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 输出设置,大小写,音标方式
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String pinyingStr="";
try {
pinyingStr=PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat, separator);
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pinyingStr;
}
/**
* 将字符串数组转换成字符串
* @param str
* @param separator 各个字符串之间的分隔符
* @return
*/
public static String stringArrayToString(String[] str, String separator) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length; i++) {
sb.append(str[i]);
if (str.length != (i + 1)) {
sb.append(separator);
}
}
return sb.toString();
}
/**
* 简单的将各个字符数组之间连接起来
* @param str
* @return
*/
public static String stringArrayToString(String[] str){
return stringArrayToString(str,"");
}
/**
* 将字符数组转换成字符串
* @param str
* @param separator 各个字符串之间的分隔符
* @return
*/
public static String charArrayToString(char[] ch, String separator) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ch.length; i++) {
sb.append(ch[i]);
if (ch.length != (i + 1)) {
sb.append(separator);
}
}
return sb.toString();
}
/**
* 将字符数组转换成字符串
* @param str
* @return
*/
public static String charArrayToString(char[] ch) {
return charArrayToString(ch," ");
}
/**
* 取汉字的首字母
* @param src
* @param isCapital 是否是大写
* @return
*/
public static char[] getHeadByChar(char src,boolean isCapital){
//如果不是汉字直接返回
if (src <= 128) {
return new char[]{src};
}
//获取所有的拼音
String []pinyingStr=PinyinHelper.toHanyuPinyinStringArray(src);
//创建返回对象
int polyphoneSize=pinyingStr.length;
char [] headChars=new char[polyphoneSize];
int i=0;
//截取首字符
for(String s:pinyingStr){
char headChar=s.charAt(0);
//首字母是否大写,默认是小写
if(isCapital){
headChars[i]=Character.toUpperCase(headChar);
}else{
headChars[i]=headChar;
}
i++;
}
return headChars;
}
/**
* 取汉字的首字母(默认是大写)
* @param src
* @return
*/
public static char[] getHeadByChar(char src){
return getHeadByChar(src,true);
}
/**
* 查找字符串首字母
* @param src
* @return
*/
public static String[] getHeadByString(String src){
return getHeadByString( src, true);
}
/**
* 查找字符串首字母
* @param src
* @param isCapital 是否大写
* @return
*/
public static String[] getHeadByString(String src,boolean isCapital){
return getHeadByString( src, isCapital,null);
}
/**
* 查找字符串首字母
* @param src
* @param isCapital 是否大写
* @param separator 分隔符
* @return
*/
public static String[] getHeadByString(String src,boolean isCapital,String separator){
char[]chars=src.toCharArray();
String[] headString=new String[chars.length];
int i=0;
for(char ch:chars){
char[]chs=getHeadByChar(ch,isCapital);
StringBuffer sb=new StringBuffer();
if(null!=separator){
int j=1;
for(char ch1:chs){
sb.append(ch1);
if(j!=chs.length){
sb.append(separator);
}
j++;
}
}else{
sb.append(chs[0]);
}
headString[i]=sb.toString();
i++;
}
return headString;
}
public static void main(String[] args) {
System.out.println(stringArrayToString(getHeadByString("我se 心")));
}
}
分享到:
相关推荐
总之,"汉语转拼音之pinyin4j 通用类" 是Java开发中处理汉字到拼音转换的一个强大工具,它提供了丰富的功能,易于集成,并能适应各种复杂的中文处理需求。无论是初学者还是经验丰富的开发者,都可以从中受益,提高...
总结来说,pinyin4j是一个强大的汉字转拼音工具,它简化了Java程序员处理汉字拼音的需求。配合Sparta库,可以更全面地解决中文字符的处理问题。在开发过程中,合理利用这些库,可以提高代码的可读性和维护性,同时...
`pinyin4j-2.5.0.jar`是一个专门为Java设计的库,专门用于将汉字转换为拼音,且支持声调标记,极大地提高了处理效率和准确性。在这个库的帮助下,开发者无需关心复杂的汉字到拼音的映射规则,只需简单调用API即可...
`pinyin4j`库的使用并不复杂,但它的功能强大,可以满足大部分汉语转拼音的需求。在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的...
《汉字转拼音:pinyin4j的简化版详解》 在中文信息处理领域,将汉字转化为拼音是一项基础且重要的任务,广泛应用于搜索引擎、输入法、语音识别等多个场景。pinyin4j是一个广受欢迎的Java库,它提供了高效、便捷的...
《汉字转拼音:pinyin4j-jar工具详解》 在信息技术领域,处理中文字符时,经常需要将汉字转换为拼音,以便进行各种文本处理任务,如搜索、语音合成等。pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文...
《pinyin4j-2.5.0.jar:Java实现汉字转拼音的高效工具》 在信息化时代,处理中文字符成为许多开发者的必备技能。在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、...
"汉字转拼音类(内含pinyin4j-2.5.0.jar)" 提供了一个方便的解决方案。这个压缩包包含了一个预封装好的Java类,专门用于实现汉字到拼音的转换,并且依赖于pinyin4j库,版本号为2.5.0。 pinyin4j是一个开源的Java库...
《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...
《Pinyin4j:汉字拼音处理的利器》 在信息技术高速发展的今天,中文与英文的交互日益频繁,尤其是在编程和数据分析领域,将汉字转化为拼音的需求日益凸显。Pinyin4j便是一个专门解决这一问题的强大工具,它是一个...
完整的汉字转拼音代码,可以转多种类型,转全拼音或者转第一个字为全拼音,后面取首字母和Jar包
《pinyin4j:汉字转拼音的利器》 在处理汉字到拼音转换的场景中,pinyin4j是一个不可或缺的工具。它是一个Java库,专为处理汉字转换为拼音而设计,尤其适用于需要进行中文信息处理、搜索引擎优化、或者任何需要汉字...
`pinyin4j`是一个强大的Java库,专门用于将汉字转换为对应的汉语拼音。这个`pinyin4j-2.5.0`包提供了全面的API,使得开发人员可以方便地在Java应用程序中实现这一功能。 `pinyin4j`库由Barry DeZeng开发,它的主要...
总之,pinyin4j作为一款强大的Java库,为处理汉字拼音问题提供了高效且灵活的解决方案。无论是简单的汉字转换还是复杂的多音字处理,它都能游刃有余,为开发者的工作带来了极大的便利。掌握并合理利用pinyin4j,可以...
总的来说,"java拼音搜索pinyin4j"这个项目结合了Java Web开发的基础知识和汉字拼音处理的专业工具,通过Servlet三层架构实现了一个高效的中文搜索功能。开发者可以在这个基础上进一步扩展,如增加拼音排序、语音...
pinyin4j库的核心功能在于将汉字转换为其对应的汉语拼音,包括声母、韵母、声调等信息。这个库不仅支持基本的汉字转拼音,还能处理多音字、异体字等问题,对于开发者来说,提供了方便快捷的API接口,大大简化了开发...
在IT行业中,尤其是在Java和Android开发领域,有时候我们需要将汉字转换为对应的拼音,以便进行文本处理、搜索引擎优化或语音合成等任务。...在项目中集成`pinyin4j`,可以大大简化处理汉字拼音的工作,提高开发效率。
1. **汉字转拼音**:pinyin4j可以将单个汉字或字符串中的所有汉字转化为对应的拼音。它支持多种输出格式,如全拼、简拼、声母、韵母等。此外,它还能处理多音字,根据上下文提供最合适的读音。 2. **声调处理**:...
java安卓android汉字转拼音中文转拼音pinyin4j简化精简版. 网上流传的有180KB,太大了,对于android开发来说。我精简了很多无关内容,收录常用汉字大约2万个,完全够用了,还专门写了一个helper类,直接调用这个...
pinyin4j 是一个专门为Java开发的开源库,其主要功能是将中文字符转换为对应的汉语拼音。在处理中文数据时,尤其是在进行文本检索、语音合成或者数据分析等场景下,这个库非常实用。pinyin4j 能够帮助开发者快速地将...