/** * 字符串工具 * * @author chenwc * @date 2023/3/2 21:09 */ public class StringUtils { /** * 半角和全角除空格外的字符偏移量是65248 */ private final static Integer CharacterOffset = 65248; /** * 判断字符串是否为空 * * @param str 字符串 * @return 为空返回true,不为空返回false */ public static boolean isEmpty(String str) { return null == str || str.isEmpty(); } /** * 判断字符串是否不为空 * * @param str 字符串 * @return 不为空返回true,为空返回false */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * 判断字符串是否包含小写字母 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsLowercaseLetters(String str) { boolean flag = false; for (char c : str.toCharArray()) { if (c >= 'a' && c <= 'z') { flag = true; break; } } return flag; } /** * 判断字符串是否包含大写字母 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsUppercaseLetters(String str) { boolean flag = false; for (char c : str.toCharArray()) { if (c >= 'A' && c <= 'Z') { flag = true; break; } } return flag; } /** * 判断字符串是否包含字母 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsLetters(String str) { return (isContainsUppercaseLetters(str) || isContainsLowercaseLetters(str)); } /** * 判断字符串是否包含数字 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsNumbers(String str) { boolean flag = false; for (char c : str.toCharArray()) { if (c >= '0' && c <= '9') { flag = true; break; } } return flag; } /** * 判断字符串是否包含全角符号 * 全角字符是从65281开始到65374结束,全角空格是12288 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsFullWidthSymbol(String str) { boolean flag = false; for (char c : str.toCharArray()) { if ((c >= 65281 && c <= 65374) || c == 12288) { flag = true; break; } } return flag; } /** * 全角符号转半角符号 * * @param str 字符串 * @return 转换后的字符串 */ public static String changeFullWidthToHalfWidthSymbol(String str) { char[] halfWidth = new char[str.length()]; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c >= 65281 && c <= 65374) { halfWidth[i] = (char) (c - CharacterOffset); } else if (c == 12288) { halfWidth[i] = 32; } else { halfWidth[i] = c; } } return new String(halfWidth); } /** * 判断字符串是否包含半角符号 * 半角字符是从32(空格)开始到126结束 * * @param str 字符串 * @return 包含返回true,不包含返回false */ public static boolean isContainsHalfWidthSymbol(String str) { boolean flag = false; for (char c : str.toCharArray()) { if (c >= 32 && c <= 126) { flag = true; break; } } return flag; } /** * 半角符号转全角符号 * * @param str 字符串 * @return 转换后的字符串 */ public static String changeHalfWidthToFullWidthSymbol(String str) { char[] halfWidth = new char[str.length()]; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c >= 33 && c <= 126) { halfWidth[i] = (char) (c + CharacterOffset); } else if (c == 32) { halfWidth[i] = 12288; } else { halfWidth[i] = c; } } return new String(halfWidth); } /** * 去除字符串中的汉字 * * @param str 字符串 * @return 转换后的字符串 */ public static String removeChineseCharacters(String str) { return str.replaceAll("[\u4e00-\u9fa5]", ""); } /** * 截取出字符串中的汉字 * * @param str 字符串 * @return 转换后的字符串 */ public static String InterceptChineseCharacters(String str) { StringBuilder test = new StringBuilder(); for (char charsSs : str.toCharArray()) { String temp = String.valueOf(charsSs); // 判断是汉字 if (temp.matches("[\u4e00-\u9fa5]")) { test.append(temp); } } return test.toString(); } }