java将汉语转拼音
2015-10-09 14:11
423 查看
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 MyPinyinHelper { /** * 将汉字转换为全拼 * @param src * @return */ public static String getPingYin(String src) { char[] t1 = null; t1 = src.toCharArray(); String[] t2 = new String[t1.length]; // 设置汉字拼音输出的格式 HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); t3.setCaseType(HanyuPinyinCaseType.UPPERCASE); 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);// 将汉字的几种全拼都存到t2数组中 t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后 } else { t4 += java.lang.Character.toString(t1[i]);// 如果不是汉字字符,直接取出字符并连接到字符串t4后 } } return t4; } catch (BadHanyuPinyinOutputFormatCombination e1) { e1.printStackTrace(); } return t4; } /*** * 返回中文的首字母 * @param str * @return */ public static String getPinYinHeadChar(String str) { String convert = ""; for (int j = 0; j < str.length(); j++) { char word = str.charAt(j); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += " " + pinyinArray[0].charAt(0); } else { convert += " " +word; } } return convert; } /*** * 返回中文的首字母 * @param str * @return */ public static String getPinYinHeadCharNoSpace(String str) { String convert = ""; for (int j = 0; j < str.length(); j++) { char word = str.charAt(j); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert; } /*** * 返回中文的第一个字母,就返回一个字母,如果是数字,则返回数字 * @param str * @return */ public static String getPinYinFirstHeadChar(String str) { char first; char word = str.charAt(0); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { first = pinyinArray[0].charAt(0); }else{ first = word; } return String.valueOf(first); } /*** * 将字符串转移为ASCII码 * @param cnStr * @return */ public static String getCnASCII(String cnStr) { StringBuffer strBuf = new StringBuffer(); // 将字符串转换成字节序列 byte[] bGBK = cnStr.getBytes(); for (int i = 0; i < bGBK.length; i++) { // System.out.println(Integer.toHexString(bGBK[i]&0xff)); // 将每个字符转换成ASCII码 strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } public static void main(String[] args) { String cnStr = "蝙蝠侠"; System.out.println(getPingYin(cnStr)); System.out.println(getPinYinHeadCharNoSpace(cnStr)); System.out.println(getPinYinHeadChar(cnStr)); System.out.println(getPinYinFirstHeadChar("好烟灰缸的")); } }
相关文章推荐
- Spring中的定时调度(Scheduling)和线程池(Thread Pooling)
- Struts2软件包的下载和配置
- java例子9 链表结构
- JavaSE8-The New Date and Time API(1)
- java.io.RandomAccessFile
- Java语言使用注解处理器生成代码 —— 第一部分:注解类型
- java - (08) JNDI
- javaweb文件下载
- Java基础:为何在JDK安装路径下存在两个JRE??
- 根据两点经纬坐标计算两点间的距离[JAVA]
- java并发编程学习: 守护线程(Daemon Thread)
- Struts2国际化其二
- 数据处理---Java数据处理之消息队列
- Java IO 之 FileInputStream & FileOutputStream源码分析
- 带哨兵的单链表的操作java版本
- java对象 深度克隆(不实现Cloneable接口)和浅度克隆
- 【转】Java基础:JDK JRE JVM三者之间的联系
- java学习---基础语法
- HashMap和Hashtable的区别
- java实现阿拉伯数字转换为汉字数字源代码