java汉字转拼音操作工具类
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;
/**
* java汉字转拼音操作工具类
* @author admin
*/
public class PinyinUtil {
/**
* 将字符串转换成拼音数组
* @param src
* @return
*/
public String[] stringToPinyin(String src, String separator) {
return stringToPinyin(src, true, separator);
}
/**
* 将字符串转换成拼音数组
* @param src
* @param isPolyphone
* 是否查出多音字的所有拼音
* @param separator
* 多音字拼音之间的分隔符
* @return
*/
public 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 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();
}
/**
* 将汉字转换成拼音
* @param hanzi
* @param separator
* @return
*/
@SuppressWarnings("deprecation")
public 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) {
e.printStackTrace();
}
return pinyingStr;
}
/**
* 将字符串数组转换成字符串
* @param str
* @param separator
* 各个字符串之间的分隔符
* @return
*/
public 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
* @param separator
* 各个字符串之间的分隔符
* @return
*/
public 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 src
* @param isCapital
* 是否是大写
* @return
*/
public 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
* @param isCapital
* 是否大写
* @return
*/
public String[] getHeadByString(String src, boolean isCapital) {
return getHeadByString(src, isCapital, null);
}
/**
* 查找字符串首字母
* @param src
* @param isCapital
* 是否大写
* @param separator
* 分隔符
* @return
*/
public 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;
}
}
你可以这么用:
PinyinUtil putil = new PinyinUtil();
String[] result = putil.getHeadByString("拼音工具类", true);
StringBuffer sb = new StringBuffer();
for (String str : result) {
sb.append(str);
}
System.out.println(sb.toString());
附件是Pinyin4j-2.5.0.jar
分享到:
相关推荐
《Pinyin4j:汉字拼音处理的利器》 在信息技术高速发展的今天,中文与英文的交互日益频繁,尤其是在编程和数据分析领域,将汉字转化为拼音的需求日益凸显。Pinyin4j便是一个专门解决这一问题的强大工具,它是一个...
赠送jar包:pinyin4j-2.5.0.jar; 赠送原API文档:pinyin4j-2.5.0-javadoc.jar; 赠送源代码:pinyin4j-2.5.0-sources.jar; 赠送Maven依赖信息文件:pinyin4j-2.5.0.pom; 包含翻译后的API文档:pinyin4j-2.5.0-...
《pinyin4j:Java实现拼音处理的利器》 在Java开发中,有时我们需要处理汉字与拼音之间的转换,比如在搜索引擎优化(SEO)时,将汉字转化为拼音以便于搜索引擎识别,或者在数据库中以拼音进行索引等。pinyin4j就是...
《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...
《关于pinyin4j-2.5.1.jar与Java拼音处理库的解析与应用》 在Java开发中,处理中文字符转化为拼音是一项常见的任务,这时我们常常会使用到pinyin4j这个开源库。然而,如果在项目中遇到"The import ...
《pinyin4j-2.5.0.jar:Java与Kotlin中的拼音处理库》 在Java和Kotlin编程中,处理汉字转拼音的需求时有发生,比如在搜索引擎的关键词提取、文本排序或中文输入法的实现等场景。为此,开发者们常常需要借助一些专门...
在这种情况下,`pinyin4j`是一个非常实用的库,能够帮助开发者实现这一功能。`pinyin4j-2.5.0`是该库的一个特定版本,它提供了稳定且高效的汉译拼音服务。 `pinyin4j`库的核心功能是将汉字转换为汉语拼音。这个过程...
《pinyin4j-2.5.0:Java实现的汉语拼音转换库》 在Java开发中,有时候我们需要将汉字转换成对应的汉语拼音,以便进行各种处理,如搜索、排序或者处理多音字问题。这时,`pinyin4j-2.5.0`这个开源库就显得尤为重要。...
《pinyin4j:汉字转拼音的利器》 在信息技术高速发展的今天,处理中文字符,尤其是将汉字转换为拼音的需求日益凸显。pinyin4j,作为一个强大的Java库,专门用于解决这个问题,它使得开发者能够在Java应用程序中轻松...
《pinyin4j:汉字转拼音的利器》 在处理汉字到拼音转换的场景中,pinyin4j是一个不可或缺的工具。它是一个Java库,专为处理汉字转换为拼音而设计,尤其适用于需要进行中文信息处理、搜索引擎优化、或者任何需要汉字...
《pinyin4j:汉字转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在软件开发领域。对于Java开发者来说,pinyin4j是一个不可或缺的工具包,它专门用于将汉字转换为拼音,从而解决了...
《pinyin4j-2.5.0.jar:Java实现汉字转拼音的高效工具》 在信息化时代,处理中文字符成为许多开发者的必备技能。在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、...
《使用pinyin4j库进行中文到拼音转换的详解》 在处理中文字符时,有时我们需要将汉字转换为对应的拼音,以便进行各种文本处理任务,如搜索引擎优化、文本分析或语音合成。在这种情况下,Java开发者可以利用开源库...
《深入理解pinyin4j库及其使用》 在Java编程中,处理中文字符尤其是转换为拼音的任务时常出现。为了高效地解决这个问题,开发者们通常会借助于特定的库,其中pinyin4j就是一个广泛使用的开源工具。本文将详细介绍...
《深入理解pinyin4j-2.5.0:jar包、源码与说明文档解析》 在Java编程中,处理汉字转化为拼音的任务是常见需求,pinyin4j作为一个强大的开源库,为开发者提供了便捷的解决方案。本文将围绕pinyin4j-2.5.0的jar包、...
《pinyin4j-2.5.0.jar:汉字转拼音的神器》 在IT行业中,处理汉字与拼音之间的转换是一项常见的任务,特别是在中文信息处理、搜索引擎优化、数据分析等领域。pinyin4j-2.5.0.jar便是一款强大的Java库,专为解决这个...
《pinyin4j-2.5.0.jar:Java汉字转拼音工具的全面解析与应用》 在Java编程中,处理汉字与拼音的转换是一项常见的任务,尤其在文本处理、搜索索引、拼音输入法等领域。pinyin4j库正是为了解决这一问题而设计的。本文...
《Pinyin4j工具包详解:汉字转拼音的利器》 在处理中文数据时,我们经常需要将汉字转换为拼音,以便进行各种处理,如排序、搜索或建立索引。这时,一个强大的工具包——net.sourceforge.pinyin4j就显得尤为重要。这...
《pinyin4j:中文转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在搜索引擎、信息分类、数据分析等领域。对于非汉字字符集的系统来说,中文字符的处理尤为复杂,这就催生了将中文...