Pinyin4j之Pinyin4jUtils工具类

编程入门 行业动态 更新时间:2024-10-25 04:17:42

Pinyin4j之Pinyin4jUtils<a href=https://www.elefans.com/category/jswz/34/1770073.html style=工具类"/>

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();  }  
}

 

 

更多推荐

Pinyin4j之Pinyin4jUtils工具类

本文发布于:2023-06-22 05:11:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/828212.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:工具   Pinyin4j   Pinyin4jUtils

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!