`
藏蓝......
  • 浏览: 3702 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Pinyin4j

阅读更多

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

分享到:
评论
1 楼 lhforever1212 2013-03-04  
谢谢分享,很好用的代码!

相关推荐

    pinyin4j.zip pinyin4j.jar

    《Pinyin4j:汉字拼音处理的利器》 在信息技术高速发展的今天,中文与英文的交互日益频繁,尤其是在编程和数据分析领域,将汉字转化为拼音的需求日益凸显。Pinyin4j便是一个专门解决这一问题的强大工具,它是一个...

    pinyin4j-2.5.0-API文档-中文版.zip

    赠送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 jar包

    《pinyin4j:Java实现拼音处理的利器》 在Java开发中,有时我们需要处理汉字与拼音之间的转换,比如在搜索引擎优化(SEO)时,将汉字转化为拼音以便于搜索引擎识别,或者在数据库中以拼音进行索引等。pinyin4j就是...

    pinyin4j(解决多音字问题源码)

    《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...

    pinyin4j-2.5.1.jar

    《关于pinyin4j-2.5.1.jar与Java拼音处理库的解析与应用》 在Java开发中,处理中文字符转化为拼音是一项常见的任务,这时我们常常会使用到pinyin4j这个开源库。然而,如果在项目中遇到"The import ...

    pinyin4j-2.5.0.jar下载

    《pinyin4j-2.5.0.jar:Java与Kotlin中的拼音处理库》 在Java和Kotlin编程中,处理汉字转拼音的需求时有发生,比如在搜索引擎的关键词提取、文本排序或中文输入法的实现等场景。为此,开发者们常常需要借助一些专门...

    汉语转换成拼音的jar包pinyin4j-2.5.0版本

    在这种情况下,`pinyin4j`是一个非常实用的库,能够帮助开发者实现这一功能。`pinyin4j-2.5.0`是该库的一个特定版本,它提供了稳定且高效的汉译拼音服务。 `pinyin4j`库的核心功能是将汉字转换为汉语拼音。这个过程...

    pinyin4j-2.5.0

    《pinyin4j-2.5.0:Java实现的汉语拼音转换库》 在Java开发中,有时候我们需要将汉字转换成对应的汉语拼音,以便进行各种处理,如搜索、排序或者处理多音字问题。这时,`pinyin4j-2.5.0`这个开源库就显得尤为重要。...

    pinyin4j 开发jar包

    《pinyin4j:汉字转拼音的利器》 在信息技术高速发展的今天,处理中文字符,尤其是将汉字转换为拼音的需求日益凸显。pinyin4j,作为一个强大的Java库,专门用于解决这个问题,它使得开发者能够在Java应用程序中轻松...

    pinyin4j最新jar包,汉字转pinyin必备

    《pinyin4j:汉字转拼音的利器》 在处理汉字到拼音转换的场景中,pinyin4j是一个不可或缺的工具。它是一个Java库,专为处理汉字转换为拼音而设计,尤其适用于需要进行中文信息处理、搜索引擎优化、或者任何需要汉字...

    pinyin4j-2.5.0.zip

    《pinyin4j:汉字转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在软件开发领域。对于Java开发者来说,pinyin4j是一个不可或缺的工具包,它专门用于将汉字转换为拼音,从而解决了...

    pinyin4j-2.5.0.jar 下载 java汉字转拼音 jar包 附带超级简单小dome

    《pinyin4j-2.5.0.jar:Java实现汉字转拼音的高效工具》 在信息化时代,处理中文字符成为许多开发者的必备技能。在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、...

    将简体中文和繁体中文转换拼音的jar包 pinyin4j-2.5.0.jar

    《使用pinyin4j库进行中文到拼音转换的详解》 在处理中文字符时,有时我们需要将汉字转换为对应的拼音,以便进行各种文本处理任务,如搜索引擎优化、文本分析或语音合成。在这种情况下,Java开发者可以利用开源库...

    pinyin4j所需jar包

    《深入理解pinyin4j库及其使用》 在Java编程中,处理中文字符尤其是转换为拼音的任务时常出现。为了高效地解决这个问题,开发者们通常会借助于特定的库,其中pinyin4j就是一个广泛使用的开源工具。本文将详细介绍...

    pinyin4j-2.5.0的jar包、源码、说明文档.zip

    《深入理解pinyin4j-2.5.0:jar包、源码与说明文档解析》 在Java编程中,处理汉字转化为拼音的任务是常见需求,pinyin4j作为一个强大的开源库,为开发者提供了便捷的解决方案。本文将围绕pinyin4j-2.5.0的jar包、...

    pinyin4j-2.5.0.jar

    《pinyin4j-2.5.0.jar:汉字转拼音的神器》 在IT行业中,处理汉字与拼音之间的转换是一项常见的任务,特别是在中文信息处理、搜索引擎优化、数据分析等领域。pinyin4j-2.5.0.jar便是一款强大的Java库,专为解决这个...

    pinyin4j-2.5.0.jar+使用说明+使用代码

    《pinyin4j-2.5.0.jar:Java汉字转拼音工具的全面解析与应用》 在Java编程中,处理汉字与拼音的转换是一项常见的任务,尤其在文本处理、搜索索引、拼音输入法等领域。pinyin4j库正是为了解决这一问题而设计的。本文...

    net.sourceforge.pinyin4j.zip

    《Pinyin4j工具包详解:汉字转拼音的利器》 在处理中文数据时,我们经常需要将汉字转换为拼音,以便进行各种处理,如排序、搜索或建立索引。这时,一个强大的工具包——net.sourceforge.pinyin4j就显得尤为重要。这...

    pinyin4j版本为2.5.0

    《pinyin4j:中文转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在搜索引擎、信息分类、数据分析等领域。对于非汉字字符集的系统来说,中文字符的处理尤为复杂,这就催生了将中文...

Global site tag (gtag.js) - Google Analytics