一、导入依赖
<!-- 拼音依赖 --> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency>
讯享网
二、新建工具类PingYinUtils(直接粘贴)
讯享网package com.aliyun.vuelogin.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 PingYinUtils {
public static HanyuPinyinOutputFormat PINYIN_FORMAT; static {
PINYIN_FORMAT = new HanyuPinyinOutputFormat(); / * 大小写设置 LOWERCASE:小写 UPPERCASE:大写 */ PINYIN_FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE); / * 输出音标设置 * * WITH_TONE_MARK:直接用音标符(VCharType必须设置WITH_U_UNICODE,否则会抛出异常) * WITH_TONE_NUMBER:1-4数字表示音标 WITHOUT_TONE:没有音标 */ PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); / * 特殊音符ü的设置 WITH_U_AND_COLON:用u表示(没有设置默认用u表示) WITH_V:用v表示 * WITH_U_UNICODE:用ü表示 */ PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); } / * 取汉字的拼音首字母 * * @param chinese * @return */ public static String toFirstPinYin(String chinese) {
StringBuilder result = new StringBuilder(); // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try {
for (char c : chars) {
// 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); result.append(pinyinStr[0].charAt(0));// 取每个中文的第一个拼音字母 } else {
result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.toString(); } / * 汉字转拼音小写 * * @param chinese * @return */ public static String toPinYin(String chinese) {
// 创建返回对象 StringBuilder result = new StringBuilder();// 方法调用的时候新建,对象没有共享,不会有线程安全问题。 // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try {
for (char c : chars) {
// 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); // result.append(pinyinStr[0].charAt(0));//取每个中文的第一个拼音字母 result.append(pinyinStr[0]); } else {
result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.toString(); } / * 汉字转拼音每个字符串的第一个字母大写其余小写 * * @param chinese * @return */ public static String toUpperStringsFirstCharPinYin(String chinese) {
// 创建返回对象 StringBuilder result = new StringBuilder();// 方法调用的时候新建,对象没有共享,不会有线程安全问题。 // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try {
for (char c : chars) {
// 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); // result.append(pinyinStr[0].charAt(0));//取每个中文的第一个拼音字母 String c1 = String.valueOf(pinyinStr[0]); result.append(c1.substring(0, 1).toUpperCase()).append(c1.substring(1)); } else {
result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.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(); } }
三、测试使用
package com.aliyun.vuelogin; import com.aliyun.vuelogin.util.PingYinUtils; public class PingYinTest {
public static void main(String[] args) {
String firstPinYin = PingYinUtils.toFirstPinYin("王安石").toUpperCase(); String pinYin = PingYinUtils.toPinYin("王安石"); String upperStringsFirstCharPinYin = PingYinUtils.toUpperStringsFirstCharPinYin("王安石"); String cnASCII = PingYinUtils.getCnASCII("王安石"); System.out.println(firstPinYin); System.out.println(pinYin); System.out.println(upperStringsFirstCharPinYin); System.out.println(cnASCII); } }
运行结果
讯享网WAS wanganshi WangAnShi e7 8e 8b e5 ae 89 e7 9f b3
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45469.html