`
binge520cn
  • 浏览: 23258 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java汉字转拼音

    博客分类:
  • java
阅读更多

java汉字转拼音,主要是利用pinyin4j工具实现,有些场合,可能会用到汉字转换成拼音的功能,下面是具体的代码。 

 

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 sunlightcs
 * 2011-7-1
 * http://hi.juziku.com/sunlightcs
 *
 */
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
	 */
	@SuppressWarnings("deprecation")
	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) {
				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(hanziToPinyin("是否大写",""));
	}

}

 pinyin4j-2.5.0.jar 要用到这个jar包

分享到:
评论

相关推荐

    Java汉字转拼音(支持多音字)

    这个"Java汉字转拼音(支持多音字)"的主题涉及了如何在Java环境中实现这一功能,特别是考虑到中文的多音字特性。 多音字是指一个汉字有多个读音,其读音取决于它在特定语境中的含义。例如,“打”字可以读作“dǎ...

    java 汉字转换拼音

    根据提供的文件信息,本文将详细解析“Java汉字转换拼音”的实现方法及原理,并结合实际代码进行分析。 ### 一、项目概述 #### 标题:Java汉字转换拼音 该标题明确指出项目的主要功能是利用Java语言实现汉字到拼音...

    java中文转拼音

    ### Java程序实现中文转拼音及首字母转换 #### 概述 在中文处理领域,将汉字转换为拼音是一项常见的需求,特别是在搜索引擎、自然语言处理、数据标准化等应用场景中。本文介绍了一个简单的Java类`ChineseToEnglish...

    java汉字转拼音源码

    java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java汉字转拼音java...

    java汉字转拼音(全拼和首字母)

    在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...

    java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII

    以上就是关于“java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII”的技术要点。在实际应用中,根据需求选择合适的转换方式,并注意处理可能出现的异常情况,如多音字、非ASCII字符等。在处理大量...

    JAVA 汉字转换拼音

    总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...

    java 中文转换拼音

    在Java编程语言中,中文字符转换为拼音是一个常见的需求,特别是在处理中文文本的搜索、语音合成或者数据分析等场景。这个给定的压缩包文件“languageConvert”可能包含了一个实现此功能的Java程序,使得开发者能够...

    Java汉字转换拼音

    总的来说,Java汉字转换拼音主要依赖于第三方库,如`pinyin4j`,通过这些库提供的接口和方法,我们可以方便地实现汉字到拼音的转换,并根据实际需求进行相应的处理。在开发过程中,注意选择适合项目需求的库,并充分...

    汉字转换拼音 java

    对于`JAVA汉字转换拼音`,你可以查看源代码,学习作者是如何实现汉字转换拼音的,并根据实际需求进行修改或扩展。 总之,Java中实现汉字转换拼音的功能并不复杂,关键在于选择合适的库和正确地调用其API。Pinyin4j...

    java 中文转拼音

    java 中文转拼音 相当给力 识别多音字,2万个汉字

    java 汉字转拼音

    java 汉字转拼音

    java汉字转拼音代码+多音字词汇表

    这个“java汉字转拼音代码+多音字词汇表”资源提供了一个工具类,用于高效地完成这个任务。下面将详细讨论相关知识点。 1. **汉字转拼音**: 汉字转拼音是将汉字转化为对应的汉语拼音的过程。在Java中,可以使用...

    java汉字转拼音字母项目例子_可直接运行

    Java汉字转拼音字母项目是一个实用的工具,它允许开发者将汉字转换为对应的拼音表示,这对于中文处理、搜索引擎优化(SEO)以及语音合成等场景非常有帮助。本项目提供了可以直接运行的示例,使得用户能够快速理解和...

    Java中文转拼音--整理

    Java中文转拼音技术是将汉字转化为其对应的汉语拼音的一种编程实现。在Java中,我们可以利用特定的库或者API来完成这个任务,这对于处理中文语音识别、搜索引擎优化、文本分析等多种场景都有重要作用。以下是对这个...

    Java汉字转拼音

    ### Java汉字转拼音知识点解析 #### 一、概述 在Java开发中,有时我们需要将汉字转换成拼音,这种需求常见于各种应用场景,如中文姓名转拼音用于生成国际化友好的用户名或进行拼音排序等。本文将详细介绍如何利用`...

    java汉字转拼音工具类

    汉字转拼音,或拼音缩写,pinyin4j。maven,非maven项目如需jar包私聊我

    java汉字转拼音配置文件及jar.zip

    Java汉字转拼音技术是计算机处理中文文本时常用的一种方法,特别是在搜索引擎优化、语音识别、文本分析等领域有着广泛的应用。这个名为"java汉字转拼音配置文件及jar.zip"的压缩包包含了一个实现汉字到拼音转换的...

    java汉字转拼音的代码

    综上所述,`java汉字转拼音的代码`是一个实用的工具,尤其对于处理中文数据时。通过理解其工作原理和使用方法,我们可以方便地在Java项目中集成这一功能。不过,为了获得更好的效果和更广泛的汉字覆盖,推荐使用成熟...

Global site tag (gtag.js) - Google Analytics