拼音工具类



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));
	}
}
package oa.common.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; /** * 文件名:PingYinUtil.java 拼音工具类 * 版本信息:V1.0 * 日期:2013-06-18 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com * */ public class PingYinUtil { /** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */ public static String getPingYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inputString.trim().toCharArray(); String output = ""; try { for (int i = 0; i < input.length; i++) { if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format); output += temp[0]; } else output += java.lang.Character.toString(input[i]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output; } /** * 获取汉字拼音首字母,英文字符不变 * @param chinese 汉字串 * @return 汉语拼音首字母 */ public static String getFirstSpell(String chinese) { StringBuffer pybf = new StringBuffer(); char[] arr = chinese.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i 128) { try { String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat); if (temp != null) { pybf.append(temp[0].charAt(0)); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { pybf.append(arr[i]); } } return pybf.toString().replaceAll("\\W", "").trim(); } /** * 获取汉字拼音,英文字符不变 * @param chinese 汉字串 * @return 汉语拼音 */ public static String getFullSpell(String chinese) { StringBuffer pybf = new StringBuffer(); char[] arr = chinese.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i 128) { try { pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { pybf.append(arr[i]); } } return pybf.toString(); } public static void main(String[] as){ System.out.println(getPingYin("非诚勿扰")); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值