汉字转化成拼音工具类介绍

工具:pinyin4j

pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库

pinyin4j的官方下载地址:http://sourceforge.net/projects/pinyin4j/files/,目前最新的版本是2.5.0

下载解压后的目录结构及说明如下

  • doc : pinyin4j的api文档
  • lib : pinyin4j的jar包
  • src : pinyin4j的源代码
  • CHANGELOG.txt : pinyin4j的版本更新日志
  • COPYING.txt : LICENSE说明
  • README.txt : pinyin4j的概要介绍
几个主要工具类的介绍:

HanyuPinyinCaseType:定义汉语拼音的大小写类型;两个类属性UPPERCASE和LOWERCASE;

HanyuPinyinToneType:定义汉语拼音声调类型 

            WITH_TONE_NUMBER(以数字代替声调) :  zhong1  zhong4

            WITHOUT_TONE (无声调) :             zhong   zhong

            WITH_TONE_MARK (有声调) :           zhōng  zhòng

HanyuPinyinVCharType:定义汉语拼音字符u的类型(碰到unicode 的ü 、v 和 u时的显示方式) 如汉字“吕”

            WITH_U_AND_COLON : lu:3

            WITH_V :            lv3

            WITH_U_UNICODE :    lü3

HanYuPinYinOutputFormat:定义汉语拼音的输出类型,值都是取得上述三个类的类属性 eg:

      HanYuPinYinOutputFormat format = new HanYuPinYinOutputFromat();

      format.setCaseType(……);

      format.setToneType(……);

      format.setVCharType(……);

应用:

通常情况下,只需要用到其中的PinyinHelper类中的静态方法toHanyuPinyinStringArray就可以了,比如:

String[] pinyinArray =PinyinHelper.toHanyuPinyinStringArray('单');

for(int i = 0; i < pinyinArray.length; ++i){

         System.out.print(pinyinArray[i]);

}

就会输出:

dan1 chan2 shan4

下面请看一个完整的例子:

首先在项目中需要将pinyin4jjar包导入到项目中,这样里面的工具类才能被正常的应用。

/**
	 * 获取汉字串拼音首字母,英文字符不变
	 * 
	 * @param chinese
	 *            汉字串
	 * @return 汉语拼音首字母
	 */
	public static String cn2FirstSpell(String str) {
		String convert = "";
		for (int j = 0; j < str.length(); j++) {
			char word = str.charAt(j);
			String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);//这个得到的是一个汉字的多个读音的数组且带数字声调的,如张zhang1
			if (pinyinArray != null) {
				convert += pinyinArray[0].charAt(0);
			} else {
				convert += word;
			}
		}
		return convert;
	}
PinyinHelper默认转化的结果是拼音的全拼且是带数字声调的格式

再来看下面的例子,输出汉字对应拼音的全拼

/**
	 * 获取汉字串拼音,英文字符不变
	 * 
	 * @param chinese
	 *            汉字串
	 * @return 汉语拼音
	 */
	public static String cn2Spell(String src) {
		char[] t1 = null;
		t1 = src.toCharArray();
		String[] t2 = new String[t1.length];
		HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
		t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		t3.setVCharType(HanyuPinyinVCharType.WITH_V);
		String t4 = "";
		int t0 = t1.length;
		try {
			for (int i = 0; i < t0; i++) {
				// 判断是否为汉字字符
				if (java.lang.Character.toString(t1[i]).matches(
						"[\\u4E00-\\u9FA5]+")) {
					t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
					t4 += t2[0];
				} else
					t4 += java.lang.Character.toString(t1[i]);
			}
			return t4;
		} catch (Exception e1) {
			e1.printStackTrace();
			t4="";
		}
		return t4;
	}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值