Pinyin4j之Pinyin4jUtils工具类

介绍

Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制。

Pinyin4jUtils工具类是进行包装,进行支持一一些转换方法

支持方法

输入一个字符串可以给我转成首字母返回给我

例如:颐和园 

  1. 转换格式:全部大小YHY
  2. 转换格式:全部大写(中间加字符串*)Y*H*Y
  3. 转换格式:全部小写yhy
  4. 转换格式:全部小写(中间加字符串*)y*h*y
  5. 转换格式:返回首字母大写Y
  6. 转换格式:返回首字母小写y

使用方法

Pinyin4j pinyin4j = new Pinyin4j();
String first1 = pinyin4j.toPinYinUppercase("颐和园");
String first2 = pinyin4j.toPinYinUppercase("颐和园", "**");
String first3 = pinyin4j.toPinYinLowercase("颐和园");
String first4 = pinyin4j.toPinYinLowercase("颐和园","**");
String first5 = pinyin4j.toPinYinUppercaseInitials("颐和园");
String first6 = pinyin4j.toPinYinLowercaseInitials("颐和园");
System.out.println(first1);	//输出结果:YHY
System.out.println(first2);	//输出结果:Y**H**Y
System.out.println(first3);	//输出结果:yhy
System.out.println(first4);	//输出结果:y**h**y
System.out.println(first5);	//输出结果:Y
System.out.println(first6);	//输出结果:y

java工具类代码

import org.junit.Test;
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;
/**
 * 汉字转换成拼音方法
 * @author 蔡龙
 */

public class Pinyin4j {
	
	HanyuPinyinOutputFormat format = null;  
	public static enum Type {  
		UPPERCASE,			  //全部大写  
		LOWERCASE,			  //全部小写  
		FIRSTUPPER            //首字母大写
	}  
  
	public Pinyin4j(){  
		format = new HanyuPinyinOutputFormat();  
		format.setCaseType(HanyuPinyinCaseType.UPPERCASE);  
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
	}  
  
	/**
	 * 转换全部大写 
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是YHY
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinUppercase(String str) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, "", Type.UPPERCASE);  
	}  
  
	/**
	 * 转换全部大写
	 * @param str 字符串
	 * @param spera 转换字母间隔加的字符串,如果不需要为""
	 * @return str为颐和园 ,spera为** return获取到的是Y**H**Y
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinUppercase(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, spera, Type.UPPERCASE);  
	} 
	
	/**
	 * 转换全部小写
	 * @param str 字符串
	 * @return	str为颐和园 ,return获取到的是yhy
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinLowercase(String str) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, "", Type.LOWERCASE);  
	}  
  
	/**
	 * 转换全部小写
	 * @param str 字符串
	 * @param spera 转换字母间隔加的字符串,如果不需要为""
	 * @return	str为颐和园 ,spera为** return获取到的是y**h**y
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinLowercase(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, spera, Type.LOWERCASE);  
	} 
	
	/** 
	 * 获取拼音首字母(大写)
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是Y
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息
	 */  
	public String toPinYinUppercaseInitials(String str) throws BadHanyuPinyinOutputFormatCombination {  
		String initials = null;
		String py = toPinYinUppercase(str); 
		if(py.length()>1){
			initials = py.substring(0, 1);
		}
		if(py.length()<=1){
			initials = py;
		}
		return initials.trim();  
	} 
	
	/** 
	 * 获取拼音首字母(小写)
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是y
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息
	 */  
	public String toPinYinLowercaseInitials(String str) throws BadHanyuPinyinOutputFormatCombination {  
		String initials = null;
		String py = toPinYinLowercase(str); 
		if(py.length()>1){
			initials = py.substring(0, 1);
		}
		if(py.length()<=1){
			initials = py;
		}
		return initials.trim();  
	} 
  
	/** 
	 * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换 
	 * @param str    字符串
	 * @param spera  默认,可为""
	 * @param type   转换格式
	 * @return 按照转换格式转换成字符串
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息 
	 */  
	public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {  
		if(str == null || str.trim().length()==0) { 
			return ""; 
		}
		if(type == Type.UPPERCASE) { 
			format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
		} else{  
			format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		}
		String py = "";  
		String temp = "";  
		String[] t;  
		for(int i=0;i<str.length();i++){  
			char c = str.charAt(i);  
			if((int)c <= 128)  {
				py += c; 
			}else{  
				t = PinyinHelper.toHanyuPinyinStringArray(c, format);  
				if(t == null) { 
					py += c;  
				}else{  
					temp = t[0];  
					if(type == Type.FIRSTUPPER) { 
						temp = t[0].toUpperCase().charAt(0)+temp.substring(1); 
					}
					if(temp.length()>=1){
					   	temp = temp.substring(0, 1);
					}
						py += temp+(i==str.length()-1?"":spera);  
					}  
				}  
			}  
			return py.trim();  
		}  
}
	HanyuPinyinOutputFormat format = null;  
	public static enum Type {  
		UPPERCASE,			  //全部大写  
		LOWERCASE,			  //全部小写  
		FIRSTUPPER            //首字母大写
	}  
  
	public Pinyin4j(){  
		format = new HanyuPinyinOutputFormat();  
		format.setCaseType(HanyuPinyinCaseType.UPPERCASE);  
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
	}  
  
	/**
	 * 转换全部大写 
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是YHY
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinUppercase(String str) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, "", Type.UPPERCASE);  
	}  
  
	/**
	 * 转换全部大写
	 * @param str 字符串
	 * @param spera 转换字母间隔加的字符串,如果不需要为""
	 * @return str为颐和园 ,spera为** return获取到的是Y**H**Y
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinUppercase(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, spera, Type.UPPERCASE);  
	} 
	
	/**
	 * 转换全部小写
	 * @param str 字符串
	 * @return	str为颐和园 ,return获取到的是yhy
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinLowercase(String str) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, "", Type.LOWERCASE);  
	}  
  
	/**
	 * 转换全部小写
	 * @param str 字符串
	 * @param spera 转换字母间隔加的字符串,如果不需要为""
	 * @return	str为颐和园 ,spera为** return获取到的是y**h**y
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public String toPinYinLowercase(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{  
		return toPinYin(str, spera, Type.LOWERCASE);  
	} 
	
	/** 
	 * 获取拼音首字母(大写)
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是Y
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息
	 */  
	public String toPinYinUppercaseInitials(String str) throws BadHanyuPinyinOutputFormatCombination {  
		String initials = null;
		String py = toPinYinUppercase(str); 
		if(py.length()>1){
			initials = py.substring(0, 1);
		}
		if(py.length()<=1){
			initials = py;
		}
		return initials.trim();  
	} 
	
	/** 
	 * 获取拼音首字母(小写)
	 * @param str 字符串
	 * @return str为颐和园 ,return获取到的是y
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息
	 */  
	public String toPinYinLowercaseInitials(String str) throws BadHanyuPinyinOutputFormatCombination {  
		String initials = null;
		String py = toPinYinLowercase(str); 
		if(py.length()>1){
			initials = py.substring(0, 1);
		}
		if(py.length()<=1){
			initials = py;
		}
		return initials.trim();  
	} 
  
	/** 
	 * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换 
	 * @param str    字符串
	 * @param spera  默认,可为""
	 * @param type   转换格式
	 * @return 按照转换格式转换成字符串
	 * @throws BadHanyuPinyinOutputFormatCombination 异常信息 
	 */  
	public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {  
		if(str == null || str.trim().length()==0) { 
			return ""; 
		}
		if(type == Type.UPPERCASE) { 
			format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
		} else{  
			format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		}
		String py = "";  
		String temp = "";  
		String[] t;  
		for(int i=0;i<str.length();i++){  
			char c = str.charAt(i);  
			if((int)c <= 128)  {
				py += c; 
			}else{  
				t = PinyinHelper.toHanyuPinyinStringArray(c, format);  
				if(t == null) { 
					py += c;  
				}else{  
					temp = t[0];  
					if(type == Type.FIRSTUPPER) { 
						temp = t[0].toUpperCase().charAt(0)+temp.substring(1); 
					}
					if(temp.length()>=1){
					   	temp = temp.substring(0, 1);
					}
						py += temp+(i==str.length()-1?"":spera);  
					}  
				}  
			}  
			return py.trim();  
		}  
}

 

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Pinyin4j 获得首字母大写,你可以按照以下步骤进行操作: 1. 首先,确保你已经将 Pinyin4j 添加到你的项目中。 2. 导入所需的类: ```java import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; ``` 3. 创建一个方法来获取字符串的首字母大写: ```java public String getFirstLetterUpperCase(String input) { StringBuilder result = new StringBuilder(); HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // 设置输出格式为大写 format.setCaseType(HanyuPinyinCaseType.UPPERCASE); // 获取字符串的拼音数组 char[] inputArray = input.toCharArray(); for (char c : inputArray) { try { String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); // 如果字符是汉字,则取拼音的首字母 if (pinyinArray != null && pinyinArray.length > 0) { result.append(pinyinArray[0].charAt(0)); } else { // 如果不是汉字,则直接将字符添加到结果中 result.append(c); } } catch (Exception e) { // 异常情况下,直接将字符添加到结果中 result.append(c); } } return result.toString(); } ``` 4. 调用方法并传入待处理的字符串: ```java String input = "中国"; String firstLetter = getFirstLetterUpperCase(input); System.out.println(firstLetter); // 输出 "ZG" ``` 这样,你就可以使用 Pinyin4j 获得输入字符串的首字母大写了。记得先将 Pinyin4j 添加到你的项目中才能正确运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值