`
ypf3027
  • 浏览: 306523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

汉字转拼音—pinyin4j实例

    博客分类:
  • JAVA
阅读更多

 

综合应用小工具,汉字转拼音组件pinyin4j实例。(程序员收藏以备后用)

 

 

package com.xcu.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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * 
 * 获取汉语文字的拼音
 * 
 * @author Everest
 * @version 1.0 23/07/2010
 *
 */
public class PinyinUtil {

	/** 汉语拼音格式化工具类 */
	private static HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();

	
	/**
	 * 获取字符串内的所有汉字的汉语拼音
	 * @param src
	 * @return
	 */
	public static String spell(String src) {
		format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写拼音字母
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不加语调标识
		format.setVCharType(HanyuPinyinVCharType.WITH_V); // u:的声母替换为v
		
		StringBuffer sb = new StringBuffer();
		int strLength = src.length();
		try {
			for (int i = 0; i < strLength; i++) {
				// 对英文字母的处理:小写字母转换为大写,大写的直接返回
				char ch = src.charAt(i);
				if (ch >= 'a' && ch <= 'z')
					sb.append((char) (ch - 'a' + 'A'));
				if (ch >= 'A' && ch <= 'Z')
					sb.append(ch);
				// 对汉语的处理
				String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
				if (arr != null && arr.length > 0)
					sb.append(arr[0]).append(" ");
			}
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
		}
		return sb.toString();
	}

	/**
	 * 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
	 * @param src
	 * @return
	 */
	public static String spellWithTone(String src) {
		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
		format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);// 标声调
		format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
		
		if (src == null) {
			return null;
		}
		try {
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < src.length(); i++) {
				// 对英文字母的处理:小写字母转换为大写,大写的直接返回
				char ch = src.charAt(i);
				if (ch >= 'a' && ch <= 'z')
					sb.append((char) (ch - 'a' + 'A'));
				if (ch >= 'A' && ch <= 'Z')
					sb.append(ch);
				// 对汉语的处理
				String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
				if (arr == null || arr.length == 0) {
					continue;
				}
				String s = arr[0];// 不管多音字,只取第一个
				char c = s.charAt(0);// 大写第一个字母
				String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
				sb.append(pinyin).append(" ");
			}
			return sb.toString();
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
	 * @param src
	 * @return
	 */
	public static String spellNoneTone(String src) {
		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 标声调
		format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
		
		if (src == null) {
			return null;
		}
		try {
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < src.length(); i++) {
				// 对英文字母的处理:小写字母转换为大写,大写的直接返回
				char ch = src.charAt(i);
				if (ch >= 'a' && ch <= 'z')
					sb.append((char) (ch - 'a' + 'A'));
				if (ch >= 'A' && ch <= 'Z')
					sb.append(ch);
				// 对汉语的处理
				String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
				if (arr == null || arr.length == 0) {
					continue;
				}
				String s = arr[0];// 不管多音字,只取第一个
				char c = s.charAt(0);// 大写第一个字母
				String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
				sb.append(pinyin).append("");
			}
			return sb.toString();
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 获取汉语第一个字的首英文字母
	 * @param src
	 * @return
	 */
	public static String getTerm(String src){
		String res = spell(src);
		if(res!=null&&res.length()>0){
			return res.toUpperCase().charAt(0)+"";
		}else{
			return "OT";
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		System.out.println("---------------------spellWithTone");
		System.out.println(spellWithTone("English"));
		System.out.println(spellWithTone("有志者事竟成,阿斯顿佛"));
		System.out.println(spellWithTone("中华人民共和国"));
		System.out.println(spellWithTone("单丽丽"));
		
		System.out.println("-----------------------------spell");
		System.out.println(spell("English"));
		System.out.println(spell("有志者事竟成,阿斯顿佛"));
		System.out.println(spell("中华人民共和国"));
		System.out.println(spell("单丽丽"));
		
		System.out.println("----------------------spellNoneTone");
		System.out.println(spellNoneTone("English"));
		System.out.println(spellNoneTone("有志者事竟成,阿斯顿佛"));
		System.out.println(spellNoneTone("中华人民共和国"));
		System.out.println(spellNoneTone("单丽丽"));
		
		System.out.println("---------------------------getTerm");
		System.out.println(getTerm("English"));
		System.out.println(getTerm("有志者事竟成,阿斯顿佛"));
		System.out.println(getTerm("中华人民共和国"));
		System.out.println(getTerm("单丽丽"));

	}
	
}

 

 

 

 附件为:pinyin4j-2.5.0.jar

 

 

实例运行效果如下:

 



 

  • 大小: 34.5 KB
1
1
分享到:
评论

相关推荐

    中文转拼音:pinyin4j-2.5.0包及实例

    使用`pinyin4j`进行中文转拼音的实例代码大致如下: ```java import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinExample { public static void main(String[] args) { String hanzi = "汉字"; ...

    基于Java的实例源码-中文转拼音库 pinyin4j.zip

    【标题】"基于Java的实例源码-中文转拼音库 pinyin4j.zip" 提供的是一个用Java语言实现的中文转拼音的工具库——Pinyin4j的源代码。这个库广泛应用于需要将中文字符转化为拼音的场景,如搜索引擎索引、文本处理或...

    中文转拼音库 pinyin4j.7z

    总之,pinyin4j作为一个强大的中文转拼音库,极大地便利了Java开发者处理与中文拼音相关的任务。无论是简单的基础转换还是复杂的应用场景,pinyin4j都能提供高效且稳定的解决方案。在实际开发中,了解并掌握pinyin4j...

    pinyin4j的使用代码实例

    本文将通过具体的代码实例,详细介绍如何使用pinyin4j进行汉字到拼音的转换。 首先,我们需要引入pinyin4j库。通常,我们可以使用Maven或Gradle等构建工具进行依赖管理。在Maven的pom.xml文件中,添加以下依赖: `...

    pinyin4j汉字转拼音.zip

    总的来说,"pinyin4j汉字转拼音.zip"这个项目为我们提供了一个使用pinyin4j进行汉字转拼音的实例。通过分析HanziToPinyinTest,我们可以学习如何在实际开发中集成和运用这个库。对于那些需要处理汉字拼音的Android...

    pinyin4j jar包 相关实例 混排实例

    总结来说,pinyin4j jar包是一个强大的汉字转拼音工具,其最新版本提供了更加完善的性能和功能。通过学习和实践其中的示例,特别是混排实例,开发者可以熟练掌握汉字与拼音的处理技巧,进一步提升Java项目的处理中文...

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

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

    Java中汉字转拼音pinyin4j用法实例分析

    在Java编程语言中,处理汉字转拼音的任务时,pinyin4j是一个非常实用的库。这个库能够帮助开发者轻松地将汉字转换为对应的拼音,从而实现各种基于拼音的搜索、排序等功能。本篇文章将深入探讨pinyin4j的用法,并提供...

    Java汉字转拼音类库Pinyin4j详细使用方法与实例

    Java汉字转拼音类库Pinyin4j详细使用方法与实例 Pinyin4j是一个Java类库,用于将汉字转换为拼音。下面是Pinyin4j的详细使用方法与实例: 1.基本用法 Pinyin4j的使用非常方便,基本转换只需要使用PinyinHelper类的...

    C++汉字转拼音

    一个常用的库是pinyin4cpp,它是一个开源的C++库,专门用于汉字到拼音的转换。不过,由于VC6.0年代较早,可能需要手动编译这个库以适应旧版编译器。 在VC6.0环境下,首先要设置项目的配置,确保能编译C++11或更高...

    pinyin4j版本为2.5.0

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

    pinyin4j_jar包和实例及文档

    除此之外,`Java汉字排序(汉字转拼音 pinyin4j).doc`文档很可能是对如何利用pinyin4j进行汉字排序的详细说明。通常,这种排序会涉及到将汉字转化为拼音后,按照拼音的字典顺序进行排序。这种方法对于处理大量汉字...

    pinyin4j资源V2.5.0.rar

    8. demo.java:示例代码,提供了如何使用pinyin4j进行汉字转拼音的实例,是快速入门的好帮手。 通过这些文件,开发者可以了解pinyin4j的基本用法和实现原理。例如,通过阅读`demo.java`,我们可以看到如何创建`...

    C#汉字转拼音

    2. 创建实例:创建一个PinyinHelper对象,它是Pinyin4j.Net的核心类,负责处理汉字转拼音的工作。 3. 转换汉字:使用PinyinHelper的ToPinyinString方法,传入汉字字符串,即可得到对应的拼音字符串。该方法支持多种...

    Pinyin4j包及使用实例

    Pinyin4j是一个强大的Java库,专为此目的设计,它提供了丰富的功能,包括支持同一汉字的多种发音,拼音的格式化输出,以及简体中文和繁体中文之间的转换。本文将详细介绍Pinyin4j包的功能、使用方法及其相关实例。 ...

    pinyin4j.zip

    《Pinyin4j:Java库中的中文拼音转换神器》 在现代软件开发中,尤其是在处理中文数据时,中文字符与拼音之间的转换是一个常见的需求。Pinyin4j作为一个强大的Java库,正好解决了这个问题。这个小巧而功能丰富的库...

    delphi 汉字转拼音组件

    在实际使用中,开发者需要正确引用并实例化这个类,然后调用其提供的方法来完成汉字转拼音的工作。例如,可能有一个名为 `GetPinyin` 的函数,接收一个汉字字符串作为参数,返回对应的拼音字符串。 在 Delphi7 这样...

    pinyin4jJar包及java实例

    在实际开发中,通过导入pinyin4j-2.5.0.jar,并参考Pinyin4jUtil.java中的示例代码,开发者可以快速地集成汉字转拼音的功能。需要注意的是,为了保证程序的正常运行,需要确保正确引入了库,并且在使用过程中遵循API...

    拼音 汉字转拼音插件 unity可用.zip

    标题中的“拼音 汉字转拼音插件 unity可用.zip”表明这是一款为Unity游戏引擎设计的插件,主要用于将汉字转换成拼音。在Unity开发中,这样的工具可能用于语音合成、语音识别或者文本处理等功能,特别是在处理中文...

    c#汉字拼音互转,带声调(asp.net)

    3. 创建一个`PinyinHelper`实例,这是Pinyin4Net库的核心类,提供了汉字到拼音的转换功能。 4. 使用`PinyinHelper.GetWords`或`PinyinHelper.GetFirstChars`方法来获取汉字的全拼或首字母。这两个方法都会返回一个...

Global site tag (gtag.js) - Google Analytics