XiMengJianYu/.svn/pristine/5a/5a84bd5b2bdc84497e1eaf3bffd92116139419eb.svn-base
2023-04-17 17:58:44 +08:00

146 lines
4.3 KiB
Plaintext
Executable File

package com.example.administrator.ximengjianyu.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.exception.BadHanyuPinyinOutputFormatCombination;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by xukai on 2017/1/6.
*/
public class PinYinUtils {
/**
* 根据指定的汉字字符串, 返回其对应的拼音
* @param string
* @return
*/
public static String getDaxiePinyin(String string) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// 不需要音标
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 设置转换出小写字母
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
char[] charArray = string.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
// 如果是空格, 跳过当前循环
if(Character.isWhitespace(c)){
continue;
}
if(c >= -128 && c < 127){
// 不可能是汉字, 直接拼接
sb.append(c);
}else {
try {
// 获取某个字符对应的拼音. 可以获取到多音字. 单 ->DAN, SHAN
String s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0]; //返回字符串数字,因为可能是多音字,就取第一个读音
sb.append(s);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
/**
* 判断是否为中文
* @param str
* @return
*/
public static boolean isChinese(String str){
Pattern p= Pattern.compile("^[\u4e00-\u9fa5]*$");
Matcher m=p.matcher(str);
if(m.matches()){
return true;
}else{
return false;
}
}
/**
* 判断是否包含中文
* @param str
* @return
*/
public static boolean isContainChinese(String str){
Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
Matcher m = p.matcher(str);
if (m.find()) {
return true;
}
return false;
}
/**
* 判断是否为字母
* @param fstrData
* @return
*/
public static boolean isEnglish(String fstrData){
char c = fstrData.charAt(0);
if(((c>='a'&&c<='z')||(c>='A'&&c<='Z'))){
return true;
}else{
return false;
}
}
/**
* 根据指定的汉字字符串, 返回其对应的拼音
* @param string
* @return
*/
public static String getPinyin(String string) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// 不需要音标
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 设置转换出小写字母
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
char[] charArray = string.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
// 如果是空格, 跳过当前循环
if(Character.isWhitespace(c)){
continue;
}
if(c >= -128 && c < 127){
// 不可能是汉字, 直接拼接
sb.append(c);
}else {
try {
// 获取某个字符对应的拼音. 可以获取到多音字. 单 ->DAN, SHAN
String s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0]; //返回字符串数字,因为可能是多音字,就取第一个读音
sb.append(s);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
}