更新日期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工具类在Java开发中的应用与实践》 在Java开发过程中,处理汉字拼音的需求时常出现,例如搜索引擎的关键词匹配、拼音排序、中文输入法的提示等。这时,一个高效的拼音处理工具类就显得尤为重要。pinYin4J...
将字符串转换成拼音数组;将字符串转换成拼音数组;将字符串转换成拼音数组;将单个字符转换成拼音;...本工具类需要pinyin4j.jar包。jar包地址->https://download.csdn.net/download/lihaibo858/10134053
Pinyin4j的基本用法 1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”...
Pinyin4j便是一个专门解决这一问题的强大工具,它是一个开源的Java库,能够方便、高效地将汉字转换为汉语拼音,为开发者提供了极大的便利。 Pinyin4j的核心功能在于其对汉字拼音的处理能力。它能够处理单个汉字、...
《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...
《pinyin4j工具包:高效处理中文拼音的利器》 在中文信息处理领域,将汉字转换为拼音是一项基础且重要的任务。pinyin4j工具包正是为了解决这一问题而设计的,它是一个功能强大的Java库,专门用于处理中文字符并将其...
`pinyin4j`能够识别并提供这些多音字的所有读音,使得在处理这类问题时更为方便。 2. **拼音格式化**:`pinyin4j`允许开发者自定义拼音输出的格式。例如,你可以选择是否保留声调,或者使用数字表示声调(如“ma1”...
pinyin4j 工具类的jar包,基于maven的配置 <groupId>net.sourceforge.pinyin4j</groupId> <artifactId>pinyin4j <version>2.5.0 pinyin4j-2.5.0.jar pinyin4j-2.5.0.pom
"pinyin4j-2.5.0.jar"就是这样一款高效且易用的工具,它专为Java和Kotlin设计,提供了强大的汉字转拼音功能。 pinyin4j是一款开源的Java库,由Barry De Zwart开发,其主要功能是将汉字转换为汉语拼音。这个库不仅...
4. **通用类PinyinUtil**:在提供的压缩文件中,我们看到一个名为`PinyinUtil.java`的文件,这通常是一个工具类,封装了Pinyin4j的核心功能,如汉字到拼音的转换方法。开发者可以通过调用这个类的方法,快速在自己的...
1. 引入pinyin4j库:在Java项目中,可以通过Maven或Gradle等构建工具引入pinyin4j的依赖。 2. 创建实例:创建PinyinHelper或HanyuPinyinOutputFormat类的实例,设置拼音输出格式,如大小写、是否包含声调等。 3. ...
pinyin4j提供了`PinyinHelper`类,该类包含了一系列静态方法,如`toHanyuPinyinStringArray()`和`toHanyuPinyinStringWithToneMark()`,分别用于获取无声调和带有声调的拼音。此外,还可以通过`PinyinHelper`获取...
在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的应用,`pinyin4j`都能提供坚实的支持。在实际开发中,结合其他文本处理技术,如...
《Pinyin4j工具包详解:汉字转拼音的利器》 在处理中文数据时,我们经常需要将汉字转换为拼音,以便进行各种处理,如排序、搜索或建立索引。这时,一个强大的工具包——net.sourceforge.pinyin4j就显得尤为重要。这...
这样,你就可以在SpringBoot的控制器、服务层或者模型类中,灵活运用pinyin4j提供的API进行汉字转拼音操作。 除了基本的汉字转拼音,pinyin4j还可以帮助开发者实现一些高级功能。例如,你可以利用它来实现基于拼音...
《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...
首先,需要将pinyin4j-2.5.0.jar添加到项目的类路径中,这可以通过Maven、Gradle等构建工具或手动配置实现。接着,导入必要的类,如`net.sourceforge.pinyin4j.PinyinHelper`,这是pinyin4j的核心类,提供了多种转换...
1. 引入库:首先,需要在项目中引入pinyin4j的JAR包,可以通过Maven或Gradle等构建工具添加依赖,或者直接下载JAR文件添加到项目的类路径中。 2. 导入类:使用pinyin4j需要导入以下核心类: ```java import ...
为了高效地解决这个问题,开发者们通常会借助于特定的库,其中pinyin4j就是一个广泛使用的开源工具。本文将详细介绍pinyin4j库的功能、原理以及如何在实际项目中应用。 pinyin4j是一个Java库,专门用于处理汉字与...