主要用于判断字符串的中英文大小写、汉字、数字和中文转换为拼音等功能
package cn.xxx.rdc.fi.utils;
import org.springframework.stereotype.Component;
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;
/**
* 字符串类型判断工具类
*
* @author xxx
* @date: 2021-02-08 09:16:43
* @Copyright: Copyright (c) 2006 - 2021
* @Company: xxx
* @Version: V1.0
*/
@Component
public class StringTypeJudgeUtil {
/**
* 判断是否为英文小写
*
* @author: xxx
* @date: 2021-02-08 09:20:47
* @param str
* @return
*/
public boolean isEnglishLowerCase(String str) {
// 获取所有字符
char c[] = str.toCharArray();
// 获取每个字符的byte
byte b[] = new byte[c.length];
// 是否英文小写的标识符
boolean isElc = true;
// 循环所有字符
for (int i = 0; i < c.length; i++) {
b[i] = (byte)c[i];
// 对每一个字符进行判断
if (!(isElc = b[i] >= 97 && b[i] <= 122)) {
break;
}
}
return isElc;
}
/**
* 判断是否为英文大写
*
* @author: xxx
* @date: 2021-02-08 09:20:47
* @param str
* @return
*/
public boolean isEnglishUpperCase(String str) {
// 获取所有字符
char c[] = str.toCharArray();
// 获取每个字符的byte
byte b[] = new byte[c.length];
// 是否英文大写的标识符
boolean isEuc = true;
// 循环所有字符
for (int i = 0; i < c.length; i++) {
b[i] = (byte)c[i];
// 对每一个字符进行判断
if (!(isEuc = b[i] >= 65 && b[i] <= 90)) {
break;
}
}
return isEuc;
}
/**
* 判断是否为数字
*
* @author: xxx
* @date: 2021-02-08 09:33:55
* @param str
* @return
*/
public boolean isNumber(String str) {
// 获取所有字符
char c[] = str.toCharArray();
// 获取每个字符的byte
byte b[] = new byte[c.length];
// 是否数字的标识符
boolean isNumFlag = true;
// 循环所有字符
for (int i = 0; i < c.length; i++) {
b[i] = (byte)c[i];
// 对每一个字符进行判断
if (!(isNumFlag = b[i] >= 48 && b[i] <= 57)) {
break;
}
}
return isNumFlag;
}
/**
* 判断字符是否为汉字
*
* @author: xxx
* @date: 2021-02-08 09:26:18
* @param str
* @return
*/
public boolean isChineseCharacters(char c) {
return String.valueOf(c).matches("[\u4e00-\u9fa5]");
}
/**
* 判断是否为汉字、英文、数字
*
* @author: xxx
* @date: 2021-02-08 09:39:06
* @param str
* @return
*/
public boolean isCcOrEnglishOrNumber(String str) {
// 获取所有字符
char c[] = str.toCharArray();
// 获取每个字符的byte
byte b[] = new byte[c.length];
// 是否英文或数字的标识符
boolean isEon = true;
// 循环所有字符
for (int i = 0; i < c.length; i++) {
b[i] = (byte)c[i];
// 对每一个字符进行判断
if (!(b[i] >= 97 && b[i] <= 122 || b[i] >= 65 && b[i] <= 90 || b[i] >= 48 && b[i] <= 57
|| isChineseCharacters(c[i]))) {
isEon = false;
break;
}
}
return isEon;
}
/**
* 将字符串中的中文转化为拼音,其他字符不变
*
* @author: xxx
* @date: 2021-03-01 16:49:30
* @param str
* @return
*/
public String getPinyinByChineseChar(String str) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = str.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 += Character.toString(input[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return output;
}
}