赞
踩
-
-
- 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.exception.BadHanyuPinyinOutputFormatCombination;
-
- import org.apache.commons.lang3.StringUtils;
- /**
- * 拼音工具类
- *
- * @author ZhuLei
- * @date 2016年11月14日
- */
- public class PinYinUtils {
- public static enum Type {
- UPPERCASE, // 全部大写
- LOWERCASE, // 全部小写
- FIRSTUPPER // 首字母大写
- }
-
- /**
- * 获取姓名首字母,英文字符不变
- *
- * @author ZhuLei,2016年11月14日上午10:09:32
- * @param chinese
- * 汉字串
- * @param caseType
- * 大小写类型
- * @return 汉语拼音首字母
- */
- public static String getNameFirstSpell(String chinese, Type caseType) {
- StringBuffer pybf = new StringBuffer();
- char[] arr = chinese.toCharArray();
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- if (caseType == Type.UPPERCASE) {
- defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
- } else {
- defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
- }
- defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
- for (int i = 0; i < arr.length; i++) {
- if (arr[i] > 128) {
- try {
- // 多音字
- String d_y_z = DuoYinZiUtil.get(arr[i]);
- String[] temp = PinyinHelper.toHanyuPinyinStringArray(
- arr[i], defaultFormat);
- if (temp != null) {
- if (StringUtils.isNotEmpty(d_y_z)) {
- d_y_z = d_y_z.toUpperCase();
- for (String t : temp) {
- String tu = t.toUpperCase();
- if (d_y_z.equals(tu)) {
- pybf.append(t.charAt(0));
- break;
- }
- }
- } else {
- pybf.append(temp[0].charAt(0));
- }
- break;
- }
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- e.printStackTrace();
- }
- } else {
- if (arr[i] > 'A' && arr[i] < 'z') {
- pybf.append(arr[i]);
- break;
- }
- }
-
- }
- String result = "";
- if (caseType == Type.UPPERCASE) {
- result = pybf.toString().toUpperCase();
- } else {
- result = pybf.toString().toLowerCase();
- }
- return result.replaceAll("\\W", "").trim();
- }
-
- /**
- * 获取姓名全拼,英文字符不变
- *
- * @author ZhuLei,2016年11月14日上午10:09:19
- * @param chinese
- * 汉字串
- * @param splitStr
- * 分隔符
- * @param caseType
- * 大小写类型
- * @return 汉语拼音首字母
- */
- public static String getNameAllSpell(String chinese, String splitStr,
- Type caseType) {
- StringBuffer pybf = new StringBuffer();
- char[] arr = chinese.toCharArray();
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- if (caseType == Type.UPPERCASE) {
- defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
- } else {
- defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
- }
- defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
- for (int i = 0; i < arr.length; i++) {
- if (arr[i] > 128) {
- try {
- // 多音字
- String d_y_z = DuoYinZiUtil.get(arr[i]);
- String[] temp = PinyinHelper.toHanyuPinyinStringArray(
- arr[i], defaultFormat);
- if (temp != null) {
- if (i > 0) {
- pybf.append(splitStr);
- }
- if (StringUtils.isNotEmpty(d_y_z)) {
- d_y_z = d_y_z.toUpperCase();
- for (String t : temp) {
- String tu = t.toUpperCase();
- if (d_y_z.equals(tu)) {
- if (caseType == Type.FIRSTUPPER) {
- t = t.toUpperCase().charAt(0)
- + t.substring(1);
- }
- pybf.append(t);
- break;
- }
- }
- } else {
- String t = temp[0];
- if (caseType == Type.FIRSTUPPER) {
- t = temp[0].toUpperCase().charAt(0)
- + t.substring(1);
- }
- pybf.append(t);
- }
- }
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- e.printStackTrace();
- }
- } else {
- pybf.append(arr[i]);
- }
- }
- return pybf.toString().trim();
- }
-
- /**
- * 获取首字母,英文字符不变
- *
- * @author Xushuai,2016年11月16日 下午5:38:19
- * @param chinese
- * @param caseType
- * @return
- */
- public static String getFirstSpell(String chinese, Type caseType) {
- StringBuffer pybf = new StringBuffer();
- char[] arr = chinese.toCharArray();
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- if (caseType == Type.UPPERCASE) {
- defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
- } else {
- 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) {
- pybf.append(temp[0].charAt(0));
- break;
- }
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- e.printStackTrace();
- }
- } else {
- if (arr[i] > 'A' && arr[i] < 'z') {
- pybf.append(arr[i]);
- break;
- }
- }
-
- }
- String result = "";
- if (caseType == Type.UPPERCASE) {
- result = pybf.toString().toUpperCase();
- } else {
- result = pybf.toString().toLowerCase();
- }
- return result.replaceAll("\\W", "").trim();
- }
-
- /**
- * 获取全拼,英文字符不变
- *
- * @author Xushuai,2016年11月16日 下午5:40:11
- * @param chinese
- * @param splitStr
- * @param caseType
- * @return
- */
- public static String getAllSpell(String chinese, String splitStr,
- Type caseType) {
- StringBuffer pybf = new StringBuffer();
- char[] arr = chinese.toCharArray();
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- if (caseType == Type.UPPERCASE) {
- defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
- } else {
- 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) {
- if (i > 0) {
- pybf.append(splitStr);
- }
- String t = temp[0];
- if (caseType == Type.FIRSTUPPER) {
- t = temp[0].toUpperCase().charAt(0)
- + t.substring(1);
- }
- pybf.append(t);
- }
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- e.printStackTrace();
- }
- } else {
- pybf.append(arr[i]);
- }
- }
- return pybf.toString().trim();
- }
-
- /**
- * 测试main方法
- *
- * @author ZhuLei,2016年11月14日上午10:40:45
- * @param args
- */
- public static void main(String[] args) {
- // 只取姓名首字母大写
- System.out.println(getNameFirstSpell("单棉麻", Type.UPPERCASE));
- // 只取姓名首字母小写
- System.out.println(getNameFirstSpell("单棉麻", Type.LOWERCASE));
- // 全拼姓名大写
- System.out.println(getNameAllSpell("单棉麻", "-", Type.UPPERCASE));
- // 全拼姓名小写
- System.out.println(getNameAllSpell("单棉麻", "-", Type.LOWERCASE));
- // 全拼姓名首字母大写
- System.out.println(getNameAllSpell("单棉麻", "-", Type.FIRSTUPPER));
-
- // 只取首字母大写
- System.out.println(getFirstSpell("单棉麻", Type.UPPERCASE));
- // 只取首字母小写
- System.out.println(getFirstSpell("单棉麻", Type.LOWERCASE));
- // 全拼大写
- System.out.println(getAllSpell("单棉麻", "-", Type.UPPERCASE));
- // 全拼小写
- System.out.println(getAllSpell("单棉麻", "-", Type.LOWERCASE));
- // 全拼首字母大写
- System.out.println(getAllSpell("单棉麻", "-", Type.FIRSTUPPER));
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。