六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 30|回复: 0

用pinyin4j获取汉语拼音并首字母大写

[复制链接]

升级  22%

19

主题

19

主题

19

主题

秀才

Rank: 2

积分
83
 楼主| 发表于 2013-2-4 19:07:09 | 显示全部楼层 |阅读模式
pinyin4j真实彪悍,这里是一个简单的应用
 
package com.javaeye.i2534;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 SpellKit {/** * 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母 *  * @param chinese * @return */public static String spell(String chinese) {if (chinese == null) {return null;}HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不标声调format.setVCharType(HanyuPinyinVCharType.WITH_V);// u:的声母替换为vtry {StringBuilder sb = new StringBuilder();for (int i = 0; i < chinese.length(); i++) {String[] array = PinyinHelper.toHanyuPinyinStringArray(chinese.charAt(i), format);if (array == null || array.length == 0) {continue;}String s = array[0];// 不管多音字,只取第一个char c = s.charAt(0);// 大写第一个字母String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));sb.append(pinyin);}return sb.toString();} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}return null;}/** * @param args */public static void main(String[] args) {System.out.println(SpellKit.spell("刘宝瑞"));}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表