package com.xzx.gc.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 ChineseToSpell { public static void main(String[] args) { System.out.println("获取汉子首字母:"+getFirstSpell("贵阳银行")); System.out.println("汉子转化为拼音:"+getPingYin("贵阳银行")); System.out.println("汉子转化为拼音:"+getFullSpell("贵阳银行")); //System.out.println("将字符串转换成ASCII码:"+getCnASCII("贵阳银行")); System.out.println("判断是否是一个字符:"+"贵".matches("[\\u4E00-\\u9FA5]+")); } /** * 获取汉字串拼音首字母,英文字符不变 * @param chinese 汉字串 * @return 汉语拼音首字母 */ public static String getFirstSpell(String chinese) { // 用StringBuffer(字符串缓冲)来接收处理的数据 StringBuffer sb = new StringBuffer(); //字符串转换为字截数组 char[] arr = chinese.toCharArray(); //创建转换对象 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); //转换类型(大写or小写) defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //定义中文声调的输出格式 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < arr.length; i++) { //判断是否是汉子字符 if (arr[i] > 128) { try { // 提取汉字的首字母 String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat); if (temp != null) { sb.append(temp[0].charAt(0)); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { // 如果不是汉字字符,直接拼接 sb.append(arr[i]); } } return sb.toString().replaceAll("\\W", "").trim(); } /** * 将字符串中的中文转化为拼音,其他字符不变 * @param inputString * @return 汉语拼音 */ public static String getPingYin(String inputString) { //创建转换对象 HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); //转换类型(大写or小写) format.setCaseType(HanyuPinyinCaseType.LOWERCASE); //定义中文声调的输出格式 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //定义字符的输出格式 format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON); //转换为字节数组 char[] input = inputString.trim().toCharArray(); // 用StringBuffer(字符串缓冲)来接收处理的数据 StringBuffer output = new StringBuffer(); try { for (int i = 0; i < input.length; i++) { //判断是否是一个汉子字符 if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format); output.append(temp[0]); } else { // 如果不是汉字字符,直接拼接 output.append(Character.toString(input[i])); } } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output.toString(); } /** * 获取汉字串拼音,英文字符不变 【首字母大写】 * @param chinese 汉字串 * @return 汉语拼音 */ public static String getFullSpell(String chinese) { // 用StringBuffer(字符串缓冲)来接收处理的数据 StringBuffer sb = new StringBuffer(); //字符串转换字节数组 char[] arr = chinese.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); //转换类型(大写or小写) defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //定义中文声调的输出格式 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //定义字符的输出格式 defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON); for (int i = 0; i < arr.length; i++) { //判断是否是汉子字符 if (arr[i] > 128) { try { sb.append(capitalize(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0])); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { // 如果不是汉字字符,直接拼接 sb.append(arr[i]); } } return sb.toString(); } /** * 将字符串转换成ASCII码 * @param cnStr * @return String */ public static String getCnASCII(String cnStr) { StringBuffer strBuf = new StringBuffer(); // 将字符串转换成字节序列 byte[] bGBK = cnStr.getBytes(); for (int i = 0; i < bGBK.length; i++) { // 将每个字符转换成ASCII码 strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } /** * 首字母大写 * @param str * @return */ public static String capitalize(String str) { char ch[]; ch = str.toCharArray(); if (ch[0] >= 'a' && ch[0] <= 'z') { ch[0] = (char) (ch[0] - 32); } String newString = new String(ch); return newString; } }