pinyin4j的使用,好像是国人研究的成果,自己研究了下,写了个小demo,粘上来与大家共享:
package com.xawx.util;
import java.util.HashSet;
import java.util.Set;
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;
public class Pinyin4j
{
/**
* 字符串集合转换字符串(逗号分隔)
* @author wyh
* @param stringSet
* @return
*/
public static String makeStringByStringSet(Set<String> stringSet)
{
StringBuilder str = new StringBuilder();
int i = 0;
for (String s : stringSet)
{
if (i == stringSet.size() - 1)
{
str.append(s);
} else
{
str.append(s + ",");
}
i++;
}
return str.toString().toLowerCase();
}
/**
* 获取拼音集合
* @author wyh
* @param src
* @return Set<String>
*/
public static Set<String> getPinyin(String src){
if(src!=null && !src.trim().equalsIgnoreCase("")){
char[] srcChar ;
srcChar=src.toCharArray();
// 汉语拼音格式输出类
HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();
// 输出设置,大小写,音标方式等
hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
String[][] temp = new String[src.length()][];
for(int i=0;i<srcChar.length;i++){
char c = srcChar[i];
// 是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)
if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){
try{
temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);
}catch(BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){
temp[i] = new String[]{String.valueOf(srcChar[i])};
}else{
temp[i] = new String[]{""};
}
}
String[] pingyinArray = Exchange(temp);
Set<String> pinyinSet = new HashSet<String>();
for(int i=0;i<pingyinArray.length;i++){
pinyinSet.add(pingyinArray[i]);
}
return pinyinSet;
}
return null;
}
/**
* 递归
*
* @author wyh
* @param strJaggedArray
* @return
*/
public static String[] Exchange(String[][] strJaggedArray)
{
String[][] temp = DoExchange(strJaggedArray);
return temp[0];
}
/**
* 递归
*
* @author wyh
* @param strJaggedArray
* @return
*/
private static String[][] DoExchange(String[][] strJaggedArray)
{
int len = strJaggedArray.length;
if (len >= 2)
{
int len1 = strJaggedArray[0].length;
int len2 = strJaggedArray[1].length;
int newlen = len1 * len2;
String[] temp = new String[newlen];
int Index = 0;
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
{
temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];
Index++;
}
}
String[][] newArray = new String[len - 1][];
for (int i = 2; i < len; i++)
{
newArray[i - 1] = strJaggedArray[i];
}
newArray[0] = temp;
return DoExchange(newArray);
}
else
{
return strJaggedArray;
}
}
public static void main(String[] args)
{
System.out.println(makeStringByStringSet(getPinyin("汉中市")));
}
}
分享到:
相关推荐
《汉字转拼音:pinyin4j-jar工具详解》 在信息技术领域,处理中文字符时,经常需要将汉字转换为拼音,以便进行各种文本处理任务,如搜索、语音合成等。pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文...
`pinyin4j`库的核心功能是将汉字转换为汉语拼音。这个过程涉及到多个方面,包括识别多音字、处理声调以及提供不同的拼音输出格式。例如,对于汉字"好",`pinyin4j`可以输出"haο"(无声调形式)或"hǎo"(带声调形式...
《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...
4. **首字母提取**:如果你只需要汉字的首字母,`pinyin4j`也能满足需求,这对于创建基于拼音的快速检索索引非常有用。 5. **性能优化**:`pinyin4j`在设计时考虑了性能,其内部使用了高效的哈希映射和数据结构,...
此外,pinyin4j还支持更高级的功能,如拼音分词、声母韵母的提取等,这对于处理中文文本非常有用。开发者可以根据需求选择合适的方法进行调用。 在实际应用中,pinyin4j常被用于以下场景: - 搜索优化:将汉字...
pinyin4j是一款开源的Java库,专门用于汉字到拼音的转换,它提供了简单易用的API,使得开发者可以轻松地将汉字转化为拼音,包括全拼和首字母。 首先,我们来了解下pinyin4j的核心类`PinYin4jUtils`。这个工具类是...
pinyin4j的`getInitials()`方法可以快速提取汉字的首字母,从而实现按拼音首字母分组的通讯录。 总结来说,pinyin4j-2.5.0.zip是一个专为Java开发者设计的工具包,尤其适用于SpringBoot项目。它能够有效地处理汉字...
标签中的“字符转码”是指Pinyin4j能够处理汉字与拼音之间的编码转换,而“中文转汉字”则强调了它的主要功能——将汉字转换为对应的拼音形式。通过Pinyin4j,开发者无需深入理解复杂的汉字拼音规则,只需简单调用...
《使用pinyin4j进行汉字转拼音与首字母提取》 在信息技术领域,尤其是在中文处理中,将汉字转换为拼音是一项常见的任务。这在搜索引擎优化、数据录入、文本分析等场景下尤为关键。pinyin4j是一个开源Java库,专为...
《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...
《Pinyin4j:中文字符与拼音转换的Java利器》 在处理中文字符时,将汉字转换为拼音是一项常见的需求,特别是在数据处理、文本分析和搜索引擎优化等领域。Pinyin4j是一个专门为此目的设计的Java库,它为开发者提供了...
对于处理中文文本的排序、搜索、关键词提取等场景,pinyin4j具有很高的实用价值。 当出现"The import net.sourceforge.pinyin4j cannot be resolved"的错误时,有几个可能的原因需要检查: 1. **JAR文件缺失**:...
Pinyin4j是一个Java库,专门设计用于将汉字转换为拼音,同时支持简体和繁体汉字的转换,还能够处理多音字问题,这在处理中文数据时非常有用。 1. **Pinyin4j库**:Pinyin4j是一个开源项目,由Barry De Zwart开发,...
《pinyin4j:汉字转拼音的Java库》 在Java开发中,处理汉字与拼音之间的转换是一项常见的任务,例如在搜索引擎的关键词提取、文本排序、或者用户输入的拼音化处理等方面。这时,我们就需要一个能够高效准确地将汉字...
总之,pinyin4j-2.5.0作为一个高效且易于使用的汉字转拼音工具,不仅简化了开发过程,也为中文信息处理带来了便利。无论你是初学者还是经验丰富的开发者,都可以从这个库中受益。通过深入学习和实践,你可以更好地...
总结来说,Pinyin4j-2.5.0.jar是Java环境下处理中文拼音的强大工具,它提供了一套完善的API,使得开发者能轻松地将汉字转换为拼音,无论是首字母还是全拼,都能高效准确地完成。在实际项目中,正确集成并使用Pinyin4...
《Pinyin4j:Java库中的中文拼音转换神器》 在现代软件开发中,尤其是在处理中文数据时,中文字符与拼音之间的转换是一个常见的需求。Pinyin4j作为一个强大的Java库,正好解决了这个问题。这个小巧而功能丰富的库...