`
阿杜杜不是阿木木
  • 浏览: 21383 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

pinyin4j工具类

 
阅读更多

更新日期20150902

package hrhx.dhm.util;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
 * @version 20150902
 * @author duhongming
 *
 */

@SuppressWarnings("rawtypes")
public class PinyinUtil implements Comparator {
	
	/**
	 * 拼接拼音字符串
	 * @param pinyinArray
	 * @return
	 */
	private String concatPinyinStringArray(String[] pinyinArray) {
		StringBuffer pinyinStrBuf = new StringBuffer();
		if ((null != pinyinArray) && (pinyinArray.length > 0)) {
			for (int i = 0; i < pinyinArray.length; i++) {
				pinyinStrBuf.append(pinyinArray[i]);
			}
		}
		String outputString = pinyinStrBuf.toString();
		return outputString;
	}

	/**
	 * 比较字符串顺序
	 */
	public int compare(Object o1, Object o2) {
		char c1 = ((String) o1).charAt(0);
		char c2 = ((String) o2).charAt(0);
		return concatPinyinStringArray(PinyinHelper
				.toHanyuPinyinStringArray(c1))
				.compareTo(concatPinyinStringArray(PinyinHelper
						.toHanyuPinyinStringArray(c2)));
	}

	/**
	 * 汉字转拼音(全拼)
	 * @param input
	 * @return
	 */
	public String toPinyin(String input) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);
			if (c <= 'ÿ') {
				sb.append(c);
			} else {
				String pinyin = null;
				try {
					HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
					format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
					format.setVCharType(HanyuPinyinVCharType.WITH_V);
					String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
					pinyin = pinyinArray[0];
				} catch (BadHanyuPinyinOutputFormatCombination e) {
					e.printStackTrace();
				} catch (NullPointerException e) {
					e.printStackTrace();
				}
				if (pinyin != null) {
					sb.append(pinyin);
				}
			}
		}
		return sb.toString();
	}
	
	/**
	 * 汉字转拼音(首字母)
	 * @param input
	 * @return
	 */
	public String getPinyinFirstChar(String input) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);
			if (c <= 'ÿ') {
				sb.append(c);
			} else {
				String pinyin = null;
				try {
					HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
					format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
					format.setVCharType(HanyuPinyinVCharType.WITH_V);
					String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
					pinyin = pinyinArray[0];
				} catch (BadHanyuPinyinOutputFormatCombination e) {
					e.printStackTrace();
				} catch (NullPointerException e) {
					e.printStackTrace();
				}
				if (pinyin != null) {
					sb.append(pinyin.charAt(0));
				}
			}
		}
		return sb.toString();
	}
	
	public String getPinyinFirstCharExt(String input) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);
			if (c <= 'ÿ') {
				sb.append(c);
			} else {
				String pinyin = null;
				try {
					HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
					format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
					format.setVCharType(HanyuPinyinVCharType.WITH_V);
					String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
					pinyin = pinyinArray[0];
				} catch (BadHanyuPinyinOutputFormatCombination e) {
					e.printStackTrace();
				} catch (NullPointerException e) {
					e.printStackTrace();
				}
				if (pinyin != null) {
					if(i==0){
						sb.append(pinyin);
					}else{
						sb.append(pinyin.charAt(0));
					}
					
				}
			}
		}
		return sb.toString();
	}

	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws Exception {
		
		String[] data = { "孙", "孟", "宋", "尹", "廖", "张三", "蚪", "窦鸿槟", "徐", "昆","曹", "曾", "怡", "a", "。"};
		
		List list = Arrays.asList(data);
		Arrays.sort(data, new PinyinUtil());
		System.out.println("汉字排序:"+list);
		
		PinyinUtil obj = new PinyinUtil();
		String firstStr = obj.toPinyin("杜洪明");
		System.out.println("登录名(大唐):"+firstStr);
		
		String AllStr = obj.getPinyinFirstChar("杜洪明");
		System.out.println("登录名(未用):"+AllStr);
		
		String AllStrExt = obj.getPinyinFirstCharExt("杜洪明");
		System.out.println("登录名(和风):"+AllStrExt);
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    pinYin4J工具类

    《pinYin4J工具类在Java开发中的应用与实践》 在Java开发过程中,处理汉字拼音的需求时常出现,例如搜索引擎的关键词匹配、拼音排序、中文输入法的提示等。这时,一个高效的拼音处理工具类就显得尤为重要。pinYin4J...

    Pinyin4j工具类

    将字符串转换成拼音数组;将字符串转换成拼音数组;将字符串转换成拼音数组;将单个字符转换成拼音;...本工具类需要pinyin4j.jar包。jar包地址-&gt;https://download.csdn.net/download/lihaibo858/10134053

    pinyin4j工具类和jar包

    Pinyin4j的基本用法 1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”...

    pinyin4j.zip pinyin4j.jar

    Pinyin4j便是一个专门解决这一问题的强大工具,它是一个开源的Java库,能够方便、高效地将汉字转换为汉语拼音,为开发者提供了极大的便利。 Pinyin4j的核心功能在于其对汉字拼音的处理能力。它能够处理单个汉字、...

    中文转拼音工具类,pinyin4j-2.5.0.jar 适用于地址人名

    《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...

    pinyin4j工具包

    《pinyin4j工具包:高效处理中文拼音的利器》 在中文信息处理领域,将汉字转换为拼音是一项基础且重要的任务。pinyin4j工具包正是为了解决这一问题而设计的,它是一个功能强大的Java库,专门用于处理中文字符并将其...

    pinyin4j-2.5.0

    `pinyin4j`能够识别并提供这些多音字的所有读音,使得在处理这类问题时更为方便。 2. **拼音格式化**:`pinyin4j`允许开发者自定义拼音输出的格式。例如,你可以选择是否保留声调,或者使用数字表示声调(如“ma1”...

    pinyin4j.zip

    pinyin4j 工具类的jar包,基于maven的配置 &lt;groupId&gt;net.sourceforge.pinyin4j&lt;/groupId&gt; &lt;artifactId&gt;pinyin4j &lt;version&gt;2.5.0 pinyin4j-2.5.0.jar pinyin4j-2.5.0.pom

    pinyin4j-2.5.0.jar下载

    "pinyin4j-2.5.0.jar"就是这样一款高效且易用的工具,它专为Java和Kotlin设计,提供了强大的汉字转拼音功能。 pinyin4j是一款开源的Java库,由Barry De Zwart开发,其主要功能是将汉字转换为汉语拼音。这个库不仅...

    汉语转拼音之pinyin4j 通用类

    4. **通用类PinyinUtil**:在提供的压缩文件中,我们看到一个名为`PinyinUtil.java`的文件,这通常是一个工具类,封装了Pinyin4j的核心功能,如汉字到拼音的转换方法。开发者可以通过调用这个类的方法,快速在自己的...

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

    1. 引入pinyin4j库:在Java项目中,可以通过Maven或Gradle等构建工具引入pinyin4j的依赖。 2. 创建实例:创建PinyinHelper或HanyuPinyinOutputFormat类的实例,设置拼音输出格式,如大小写、是否包含声调等。 3. ...

    pinyin4j-2.5.1.jar

    pinyin4j提供了`PinyinHelper`类,该类包含了一系列静态方法,如`toHanyuPinyinStringArray()`和`toHanyuPinyinStringWithToneMark()`,分别用于获取无声调和带有声调的拼音。此外,还可以通过`PinyinHelper`获取...

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

    在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的应用,`pinyin4j`都能提供坚实的支持。在实际开发中,结合其他文本处理技术,如...

    net.sourceforge.pinyin4j.zip

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

    pinyin4j-2.5.0.zip

    这样,你就可以在SpringBoot的控制器、服务层或者模型类中,灵活运用pinyin4j提供的API进行汉字转拼音操作。 除了基本的汉字转拼音,pinyin4j还可以帮助开发者实现一些高级功能。例如,你可以利用它来实现基于拼音...

    pinyin4j-2.5.0.jar

    《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...

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

    首先,需要将pinyin4j-2.5.0.jar添加到项目的类路径中,这可以通过Maven、Gradle等构建工具或手动配置实现。接着,导入必要的类,如`net.sourceforge.pinyin4j.PinyinHelper`,这是pinyin4j的核心类,提供了多种转换...

    pinyin4j 开发jar包

    1. 引入库:首先,需要在项目中引入pinyin4j的JAR包,可以通过Maven或Gradle等构建工具添加依赖,或者直接下载JAR文件添加到项目的类路径中。 2. 导入类:使用pinyin4j需要导入以下核心类: ```java import ...

    pinyin4j所需jar包

    为了高效地解决这个问题,开发者们通常会借助于特定的库,其中pinyin4j就是一个广泛使用的开源工具。本文将详细介绍pinyin4j库的功能、原理以及如何在实际项目中应用。 pinyin4j是一个Java库,专门用于处理汉字与...

Global site tag (gtag.js) - Google Analytics