综合应用小工具,汉字转拼音组件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
分享到:
相关推荐
使用`pinyin4j`进行中文转拼音的实例代码大致如下: ```java import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinExample { public static void main(String[] args) { String hanzi = "汉字"; ...
【标题】"基于Java的实例源码-中文转拼音库 pinyin4j.zip" 提供的是一个用Java语言实现的中文转拼音的工具库——Pinyin4j的源代码。这个库广泛应用于需要将中文字符转化为拼音的场景,如搜索引擎索引、文本处理或...
总之,pinyin4j作为一个强大的中文转拼音库,极大地便利了Java开发者处理与中文拼音相关的任务。无论是简单的基础转换还是复杂的应用场景,pinyin4j都能提供高效且稳定的解决方案。在实际开发中,了解并掌握pinyin4j...
本文将通过具体的代码实例,详细介绍如何使用pinyin4j进行汉字到拼音的转换。 首先,我们需要引入pinyin4j库。通常,我们可以使用Maven或Gradle等构建工具进行依赖管理。在Maven的pom.xml文件中,添加以下依赖: `...
总的来说,"pinyin4j汉字转拼音.zip"这个项目为我们提供了一个使用pinyin4j进行汉字转拼音的实例。通过分析HanziToPinyinTest,我们可以学习如何在实际开发中集成和运用这个库。对于那些需要处理汉字拼音的Android...
总结来说,pinyin4j jar包是一个强大的汉字转拼音工具,其最新版本提供了更加完善的性能和功能。通过学习和实践其中的示例,特别是混排实例,开发者可以熟练掌握汉字与拼音的处理技巧,进一步提升Java项目的处理中文...
《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...
在Java编程语言中,处理汉字转拼音的任务时,pinyin4j是一个非常实用的库。这个库能够帮助开发者轻松地将汉字转换为对应的拼音,从而实现各种基于拼音的搜索、排序等功能。本篇文章将深入探讨pinyin4j的用法,并提供...
Java汉字转拼音类库Pinyin4j详细使用方法与实例 Pinyin4j是一个Java类库,用于将汉字转换为拼音。下面是Pinyin4j的详细使用方法与实例: 1.基本用法 Pinyin4j的使用非常方便,基本转换只需要使用PinyinHelper类的...
一个常用的库是pinyin4cpp,它是一个开源的C++库,专门用于汉字到拼音的转换。不过,由于VC6.0年代较早,可能需要手动编译这个库以适应旧版编译器。 在VC6.0环境下,首先要设置项目的配置,确保能编译C++11或更高...
《pinyin4j:中文转拼音的利器》 在信息技术高速发展的今天,处理中文字符的需求日益增长,尤其是在搜索引擎、信息分类、数据分析等领域。对于非汉字字符集的系统来说,中文字符的处理尤为复杂,这就催生了将中文...
除此之外,`Java汉字排序(汉字转拼音 pinyin4j).doc`文档很可能是对如何利用pinyin4j进行汉字排序的详细说明。通常,这种排序会涉及到将汉字转化为拼音后,按照拼音的字典顺序进行排序。这种方法对于处理大量汉字...
8. demo.java:示例代码,提供了如何使用pinyin4j进行汉字转拼音的实例,是快速入门的好帮手。 通过这些文件,开发者可以了解pinyin4j的基本用法和实现原理。例如,通过阅读`demo.java`,我们可以看到如何创建`...
2. 创建实例:创建一个PinyinHelper对象,它是Pinyin4j.Net的核心类,负责处理汉字转拼音的工作。 3. 转换汉字:使用PinyinHelper的ToPinyinString方法,传入汉字字符串,即可得到对应的拼音字符串。该方法支持多种...
Pinyin4j是一个强大的Java库,专为此目的设计,它提供了丰富的功能,包括支持同一汉字的多种发音,拼音的格式化输出,以及简体中文和繁体中文之间的转换。本文将详细介绍Pinyin4j包的功能、使用方法及其相关实例。 ...
《Pinyin4j:Java库中的中文拼音转换神器》 在现代软件开发中,尤其是在处理中文数据时,中文字符与拼音之间的转换是一个常见的需求。Pinyin4j作为一个强大的Java库,正好解决了这个问题。这个小巧而功能丰富的库...
在实际使用中,开发者需要正确引用并实例化这个类,然后调用其提供的方法来完成汉字转拼音的工作。例如,可能有一个名为 `GetPinyin` 的函数,接收一个汉字字符串作为参数,返回对应的拼音字符串。 在 Delphi7 这样...
在实际开发中,通过导入pinyin4j-2.5.0.jar,并参考Pinyin4jUtil.java中的示例代码,开发者可以快速地集成汉字转拼音的功能。需要注意的是,为了保证程序的正常运行,需要确保正确引入了库,并且在使用过程中遵循API...
标题中的“拼音 汉字转拼音插件 unity可用.zip”表明这是一款为Unity游戏引擎设计的插件,主要用于将汉字转换成拼音。在Unity开发中,这样的工具可能用于语音合成、语音识别或者文本处理等功能,特别是在处理中文...
3. 创建一个`PinyinHelper`实例,这是Pinyin4Net库的核心类,提供了汉字到拼音的转换功能。 4. 使用`PinyinHelper.GetWords`或`PinyinHelper.GetFirstChars`方法来获取汉字的全拼或首字母。这两个方法都会返回一个...