`
supben
  • 浏览: 326643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取汉语拼音

阅读更多
package com.supben.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;

public class SpellUtils {

	/**
	 * 获取全部拼音
	 * 
	 * @param src
	 *            原字符串
	 * @return
	 */
	public static String getFull(String src) {

		char[] srcChar = src.toCharArray();
		String[] srcArry = new String[srcChar.length];
		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();

		// 设置格式
		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		format.setVCharType(HanyuPinyinVCharType.WITH_V);
		String result = "";
		try {
			for (int i = 0; i < srcChar.length; i++) {
				// 判断是否为汉字字符
				if (Character.toString(srcChar[i])
						.matches("[\\u4E00-\\u9FA5]+")) {
					srcArry = PinyinHelper.toHanyuPinyinStringArray(srcChar[i],
							format);
					result += srcArry[0];
				} else
					result += Character.toString(srcChar[i]);
			}
			return result;
		} catch (BadHanyuPinyinOutputFormatCombination e1) {
			e1.printStackTrace();
		}
		return result;
	}

	/**
	 * 获取首字母拼音
	 * 
	 * @param str
	 *            原字符串
	 * @return
	 */
	public static String getFirst(String str) {

		String result = "";
		for (int j = 0; j < str.length(); j++) {
			char word = str.charAt(j);
			String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
			if (pinyinArray != null) {
				result += pinyinArray[0].charAt(0);
			} else {
				result += word;
			}
		}
		return result;
	}
	
	

}


分享到:
评论
12 楼 whxhz 2010-11-30  
我们以前的做法,数据库有一些张表的,里面存有所有汉字(包括冷僻字)的所有读音(多音字),系统加载时读入hash表
11 楼 shashadezhu888 2010-11-22  
咋没有源码呢
10 楼 cnsuifeng 2010-11-20  
个人感觉算法设计的不是很合理  可以把所有的文字对应的拼音放在一个HashMap中  这样频繁调用的话可以保证效率
9 楼 flyingzl 2010-11-19  
ray_linn 写道
-----------直接调用系统dll就可以了


呵呵,怎么调用dll,JNI,JNA?大材小用了吧。还有,你调用谁的dll,搜狗?谷歌?腾讯?。。。。你要是说百度或者搜狗的云API我还算相信。。
8 楼 xiaobing 2010-11-19  
ray_linn 写道
-----------直接调用系统dll就可以了


不在windows下不就完了
7 楼 hsh678 2010-11-19  
哎,你用了pinyin4j,有什么好发的呢
6 楼 panshunchang 2010-11-19  
据说对多音支持不好!比如  银行  会显示 yin xing
5 楼 dolwenjian 2010-11-19  
.........

大哥 你用的工具包 也发发撒。。。
这样代码 我们看了也么用。。。。。。
4 楼 hyj1254 2010-11-19  
我是来看PinyinHelper.toHanyuPinyinStringArray的
3 楼 ray_linn 2010-11-18  
-----------直接调用系统dll就可以了
2 楼 JetMah 2010-11-18  
用pinyin4j
1 楼 panshunchang 2010-11-18  
jar包提供一些,谢谢

相关推荐

Global site tag (gtag.js) - Google Analytics