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;
}
}
/**
* @param args
*/
public static void main(String[] args) {
String str = "单田芳";
System.out.println(makeStringByStringSet(getPinyin(str)));
}
}
分享到:
相关推荐
标题中的“solr_拼音分词器_pinyin4j”涉及到的是Apache Solr搜索引擎中的一个特定功能,即拼音分词。在中文文本处理中,拼音分词器能够将汉字转换成对应的拼音,这对于搜索和信息检索有着重要的作用。Solr是基于...
pinyin4j是一个Java语言编写的开源库,专用于处理中文汉字的拼音转换,它为开发者提供了便捷的API接口,使得在Java应用中进行汉字与拼音的相互转化变得轻而易举。标题中的“pinyin4j-2.5.0.jar”即为此库的特定版本...
《pinyin4j-2.5.0:Java实现的汉语拼音转换库》 在Java开发中,有时候我们需要将汉字转换成对应的汉语拼音,以便进行各种处理,如搜索、排序或者处理多音字问题。这时,`pinyin4j-2.5.0`这个开源库就显得尤为重要。...
Pinyin4j是一个Java库,主要用于将汉字转换为拼音,这对于进行基于拼音的搜索和排序非常有用。pinyinAnalyzer是Lucene的一个分析器,它利用了Pinyin4j的功能,能够将输入的中文文本分词并转化为拼音形式,以便于...
《pinyin4j-2.5.0.jar:Java与Kotlin中的拼音处理库》 在Java和Kotlin编程中,处理汉字转拼音的需求时有发生,比如在搜索引擎的关键词提取、文本排序或中文输入法的实现等场景。为此,开发者们常常需要借助一些专门...
在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的应用,`pinyin4j`都能提供坚实的支持。在实际开发中,结合其他文本处理技术,如...
通过阅读源码,我们可以发现pinyin4j使用了多种算法,如基于词典的查找、分词和拼音转换等,从而实现高效且准确的转换。此外,源码分析还能帮助开发者定位潜在问题,进行定制化开发或优化性能。 再者,说明文档是...
在这个过程中,一个名为pinyin4j的Java库起到了关键作用。pinyin4j是一个开源的Java库,其主要功能就是将汉字转换为汉语拼音,支持包括声调在内的多种拼音表示方式。本文将详细介绍如何利用pinyin4j-2.5.0.jar这个库...
《pinyin4j:汉字转拼音的Java库详解》 在Java编程中,有时我们需要将汉字转换为拼音,以便进行各种处理,如关键词提取、文本分析等。这时,pinyin4j库就显得尤为重要。pinyin4j是一个专门用于处理汉字转拼音的Java...
Pinyin4j是一个Java库,用于处理中文字符并将其转换为拼音。它可以将每个汉字转换为对应的拼音表示,这对于构建基于拼音的索引和查询非常有用。 1. **集成Pinyin4j到Solr**: 首先,你需要将Pinyin4j的JAR文件添加...
4. 音节分割:pinyin4j可以将连续的汉字转换为单个的拼音音节,这对于处理拼音的分词和搜索有重要作用。 5. 多音字处理:对于同一个汉字有多个读音的情况,pinyin4j会返回所有的读音选项,方便开发者根据上下文选择...
《Java中的中文转拼音库——Pinyin4j详解》 在Java编程中,处理中文字符时,有时我们需要将中文转化为拼音,以便进行后续的文本处理或搜索操作。Pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文将详细...
《pinyin4j:汉字转拼音的Java库详解》 在信息技术领域,处理中文字符时,将汉字转换为拼音是一项常见的需求。pinyin4j是一个专门为Java开发的开源库,专注于实现这一功能,使得开发者能够方便地在程序中进行汉字到...
《pinyin4j.jar:Java实现的汉字拼音处理库》 在编程领域,尤其是在中文处理上,经常会遇到一些挑战,比如字符集支持、乱码问题、汉字排序以及将汉字转换为拼音等。对于这些问题,国外的开发环境往往没有提供足够的...
在实际应用中,我们可以看到以下场景:假设有一个中文搜索引擎,用户输入关键词,PinyinAnalyzer会先对关键词进行分词和拼音化,然后pinyin4j将拼音化后的结果标准化,生成可供搜索引擎查询的拼音索引。这样,即使...
- **拼音分词**:在处理连续的汉字时,pinyin4j可以进行拼音分词,使得每个汉字的拼音都清晰可辨。 - **异常处理**:对于无法转换的汉字,pinyin4j会提供合理的错误处理机制,帮助开发者识别并解决潜在问题。 3. ...
本文将详细介绍如何使用Pinyin4j进行拼音分词,并提供一个简单的示例来演示其实现过程。 首先,为了在项目中使用Pinyin4j,我们需要在构建配置中引入相应的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...
4. 自然语言处理:在处理中文文本时,pinyin4j可以帮助进行分词、词性标注等任务。 总之,pinyin4j-2.5.0.jar及其内含的PinyinUtil工具类为Java开发者提供了一套强大而便捷的汉字拼音处理方案。通过理解和熟练运用...