`
zjf_1103
  • 浏览: 36740 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Pinyin4j提取汉字的拼音

阅读更多

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("汉中市")));
	}
}
 

 

分享到:
评论
5 楼 yu165683 2011-11-14  
非常感谢 正好用到
4 楼 zjf_1103 2011-04-02  
孙露威 写道
正好用到 感谢

3 楼 孙露威 2011-03-30  
正好用到 感谢
2 楼 zjf_1103 2010-06-22  
hell_liul 写道
不错,收藏一下,哈哈

O(∩_∩)O,下次回复要回复的多一点哦,不然的话会被Javaeye扣分答题的,我都被河蟹了两次了。
1 楼 hell_liul 2010-06-11  
不错,收藏一下,哈哈

相关推荐

    汉字转拼音大小写全拼首字母pinyin4j-jar

    《汉字转拼音:pinyin4j-jar工具详解》 在信息技术领域,处理中文字符时,经常需要将汉字转换为拼音,以便进行各种文本处理任务,如搜索、语音合成等。pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文...

    汉语转换成拼音的jar包pinyin4j-2.5.0版本

    `pinyin4j`库的核心功能是将汉字转换为汉语拼音。这个过程涉及到多个方面,包括识别多音字、处理声调以及提供不同的拼音输出格式。例如,对于汉字"好",`pinyin4j`可以输出"haο"(无声调形式)或"hǎo"(带声调形式...

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

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

    pinyin4j-2.5.0

    4. **首字母提取**:如果你只需要汉字的首字母,`pinyin4j`也能满足需求,这对于创建基于拼音的快速检索索引非常有用。 5. **性能优化**:`pinyin4j`在设计时考虑了性能,其内部使用了高效的哈希映射和数据结构,...

    pinyin4j-2.5.0.jar下载

    此外,pinyin4j还支持更高级的功能,如拼音分词、声母韵母的提取等,这对于处理中文文本非常有用。开发者可以根据需求选择合适的方法进行调用。 在实际应用中,pinyin4j常被用于以下场景: - 搜索优化:将汉字...

    pinyin4j拼音java

    pinyin4j是一款开源的Java库,专门用于汉字到拼音的转换,它提供了简单易用的API,使得开发者可以轻松地将汉字转化为拼音,包括全拼和首字母。 首先,我们来了解下pinyin4j的核心类`PinYin4jUtils`。这个工具类是...

    pinyin4j-2.5.0.zip

    pinyin4j的`getInitials()`方法可以快速提取汉字的首字母,从而实现按拼音首字母分组的通讯录。 总结来说,pinyin4j-2.5.0.zip是一个专为Java开发者设计的工具包,尤其适用于SpringBoot项目。它能够有效地处理汉字...

    net.sourceforge.pinyin4j.zip

    标签中的“字符转码”是指Pinyin4j能够处理汉字与拼音之间的编码转换,而“中文转汉字”则强调了它的主要功能——将汉字转换为对应的拼音形式。通过Pinyin4j,开发者无需深入理解复杂的汉字拼音规则,只需简单调用...

    pinyin4j文字转拼音+简单工具类.rar

    《使用pinyin4j进行汉字转拼音与首字母提取》 在信息技术领域,尤其是在中文处理中,将汉字转换为拼音是一项常见的任务。这在搜索引擎优化、数据录入、文本分析等场景下尤为关键。pinyin4j是一个开源Java库,专为...

    pinyin4j-2.5.0.jar

    《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...

    pinyin4j jar包

    《Pinyin4j:中文字符与拼音转换的Java利器》 在处理中文字符时,将汉字转换为拼音是一项常见的需求,特别是在数据处理、文本分析和搜索引擎优化等领域。Pinyin4j是一个专门为此目的设计的Java库,它为开发者提供了...

    pinyin4j-2.5.1.jar

    对于处理中文文本的排序、搜索、关键词提取等场景,pinyin4j具有很高的实用价值。 当出现"The import net.sourceforge.pinyin4j cannot be resolved"的错误时,有几个可能的原因需要检查: 1. **JAR文件缺失**:...

    汉语转拼音之pinyin4j 通用类

    Pinyin4j是一个Java库,专门设计用于将汉字转换为拼音,同时支持简体和繁体汉字的转换,还能够处理多音字问题,这在处理中文数据时非常有用。 1. **Pinyin4j库**:Pinyin4j是一个开源项目,由Barry De Zwart开发,...

    pinyin4j-jar

    《pinyin4j:汉字转拼音的Java库》 在Java开发中,处理汉字与拼音之间的转换是一项常见的任务,例如在搜索引擎的关键词提取、文本排序、或者用户输入的拼音化处理等方面。这时,我们就需要一个能够高效准确地将汉字...

    pinyin4j资源V2.5.0.rar

    总之,pinyin4j-2.5.0作为一个高效且易于使用的汉字转拼音工具,不仅简化了开发过程,也为中文信息处理带来了便利。无论你是初学者还是经验丰富的开发者,都可以从这个库中受益。通过深入学习和实践,你可以更好地...

    获取中文首字母与全拼pinyin4j-2.5.0.jar

    总结来说,Pinyin4j-2.5.0.jar是Java环境下处理中文拼音的强大工具,它提供了一套完善的API,使得开发者能轻松地将汉字转换为拼音,无论是首字母还是全拼,都能高效准确地完成。在实际项目中,正确集成并使用Pinyin4...

    pinyin4j.zip

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

Global site tag (gtag.js) - Google Analytics