123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package com.yihu.platform.utils;
- 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;
- /*******************************************************************************
- * pinyin4j is a plug-in, you can kind of Chinese characters into phonetic.Multi-tone character,Tone Detailed view http://pinyin4j.sourceforge.net/
- *
- * @author Administrator
- * @ClassName: Pinyin4jUtil
- * @Description: TODO
- * @author wang_china@foxmail.com
- * @date Jan 13, 2012 9:28:28 AM
- */
- public class Pinyin4jUtil {
- /***************************************************************************
- * 获取中文汉字拼音 默认输出
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:34:11 AM
- * @param chinese
- * 中文汉字
- * @throws BadHanyuPinyinOutputFormatCombination
- */
- public static String getPinyin(String chinese) {
- char[] chars = chinese.toCharArray();
- if (chinese != null && !chinese.trim().equalsIgnoreCase("")) {
- char[] srcChar = chinese.toCharArray();
- String[][] temp = new String[chinese.length()][];
- for (int i = 0; i < srcChar.length; i++) {
- char c = srcChar[i];
- // 是中文或者a-z或者A-Z转换拼音
- if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {
- try {
- temp[i] = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat());
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else { //否则则保持原样
- temp[i] = new String[] { String.valueOf(srcChar[i]) };
- }
- }
- String[] pingyinArray = Exchange(temp);
- if(pingyinArray != null && pingyinArray.length > 0){
- return pingyinArray[0];
- }
- }
- return null;
- }
- /***************************************************************************
- * Default Format 默认输出格式
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:35:51 AM
- * @return
- */
- public static HanyuPinyinOutputFormat getDefaultOutputFormat() {
- HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
- format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
- format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 没有音调数字
- format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u显示
- return format;
- }
- /***************************************************************************
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:39:54 AM
- * @param strJaggedArray
- * @return
- */
- public static String[] Exchange(String[][] strJaggedArray) {
- String[][] temp = DoExchange(strJaggedArray);
- return temp[0];
- }
- /***************************************************************************
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:39:47 AM
- * @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] = capitalize(strJaggedArray[0][i]) + capitalize(strJaggedArray[1][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;
- }
- }
- /***************************************************************************
- * 首字母大写
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:36:18 AM
- * @param s
- * @return
- */
- public static String capitalize(String s) {
- char ch[];
- ch = s.toCharArray();
- if (ch[0] >= 'a' && ch[0] <= 'z') {
- ch[0] = (char) (ch[0] - 32);
- }
- String newString = new String(ch);
- return newString;
- }
- /**
- * 获取汉字首字母
- * @param str
- * @return
- */
- public static String getPinYinHeadChar(String str) {
- if (StringUtil.isEmpty(str)) {
- return "";
- }
- str = str.replaceAll("厦门","xm").replaceAll("重庆", "cq").replaceAll("长沙", "cs").replaceAll("长春", "cc");
- 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;
- }
- }
- convert = string2AllTrim(convert);
- return convert.toLowerCase();
- }
-
- /**
- * 去掉字符串包含的所有空格
- *
- * @param value
- * @return
- */
- public static String string2AllTrim(String value) {
- if (StringUtil.isEmpty(value)) {
- return "";
- }
- return value.trim().replace(" ", "");
- }
- /***************************************************************************
- * Test
- *
- * @Name: Pinyin4jUtil.java
- * @Description: TODO
- * @author: wang_chian@foxmail.com
- * @version: Jan 13, 2012 9:49:27 AM
- * @param args
- * @throws BadHanyuPinyinOutputFormatCombination
- */
- public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
- String str = "张三覃矶澊左1@";
- System.out.println("小写输出:" + getPinyin(str));
- }
- }
|