字符串处理工具类
-
import java.util.Arrays; public class StringUtils { /** * 将字符串反转 * @param str 要反转的字符串 * @return 反转后的字符串 */ public static String reverseString(String str) { return new StringBuilder(str).reverse().toString(); } /** * 判断字符串是否为空 * @param str 要判断的字符串 * @return 如果字符串为空则返回true,否则返回false */ public static boolean isEmpty(String str) { return str == null || str.isEmpty(); } /** * 去除字符串两端的空格 * @param str 要处理的字符串 * @return 去除两端空格后的字符串 */ public static String trim(String str) { return str.trim(); } /** * 将字符串转换为大写 * @param str 要转换的字符串 * @return 转换为大写后的字符串 */ public static String toUpperCase(String str) { return str.toUpperCase(); } /** * 将字符串转换为小写 * @param str 要转换的字符串 * @return 转换为小写后的字符串 */ public static String toLowerCase(String str) { return str.toLowerCase(); } /** * 判断字符串是否以指定的前缀开始 * @param str 要判断的字符串 * @param prefix 前缀 * @return 如果字符串以指定的前缀开始则返回true,否则返回false */ public static boolean startsWith(String str, String prefix) { return str.startsWith(prefix); } /** * 判断字符串是否以指定的后缀结束 * @param str 要判断的字符串 * @param suffix 后缀 * @return 如果字符串以指定的后缀结束则返回true,否则返回false */ public static boolean endsWith(String str, String suffix) { return str.endsWith(suffix); } /** * 判断字符串是否包含指定子字符串 * @param str 要判断的字符串 * @param subStr 子字符串 * @return 如果字符串包含指定子字符串则返回true,否则返回false */ public static boolean contains(String str, String subStr) { return str.contains(subStr); } /** * 将字符串按照指定分隔符拆分为数组 * @param str 要拆分的字符串 * @param delimiter 分隔符 * @return 拆分后的字符串数组 */ public static String[] split(String str, String delimiter) { return str.split(delimiter); } /** * 将字符串按照指定分隔符拆分为列表 * @param str 要拆分的字符串 * @param delimiter 分隔符 * @return 拆分后的字符串列表 */ public static List<String> splitToList(String str, String delimiter) { return Arrays.asList(str.split(delimiter)); } /** * 替换字符串中的指定子字符串 * @param str 要替换的字符串 * @param target 要被替换的子字符串 * @param replacement 替换字符串 * @return 替换后的字符串 */ public static String replace(String str, String target, String replacement) { return str.replace(target, replacement); } /** * 将字符串转换为首字母大写 * @param str 要转换的字符串 * @return 首字母大写的字符串 */ public static String capitalize(String str) { if (isEmpty(str)) { return str; } return Character.toUpperCase(str.charAt(0)) + str.substring(1); } /** * 将字符串转换为首字母小写 * @param str 要转换的字符串 * @return 首字母小写的字符串 */ public static String uncapitalize(String str) { if (isEmpty(str)) { return str; } return Character.toLowerCase(str.charAt(0)) + str.substring(1); } /** * 将字符串转换为驼峰命名法(首字母小写) * 例如: "hello_world" -> "helloWorld" * @param str 要转换的字符串 * @return 转换后的字符串 */ public static String toCamelCase(String str) { if (isEmpty(str)) { return str; } StringBuilder sb = new StringBuilder(); String[] words = str.split("_"); sb.append(words[0]); for (int i = 1; i < words.length; i++) { sb.append(capitalize(words[i])); } return sb.toString(); } /** * 将字符串转换为帕斯卡命名法(首字母大写) * 例如: "hello_world" -> "HelloWorld" * @param str 要转换的字符串 * @return 转换后的字符串 */ public static String toPascalCase(String str) { return capitalize(toCamelCase(str)); } /** * 将字符串转换为下划线命名法(小写字母,单词间用下划线分隔) * 例如: "HelloWorld" -> "hello_world" * @param str 要转换的字符串 * @return 转换后的字符串 */ public static String toSnakeCase(String str) { if (isEmpty(str)) { return str; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (Character.isUpperCase(c)) { if (i > 0) { sb.append('_'); } sb.append(Character.toLowerCase(c)); } else { sb.append(c); } } return sb.toString(); } /** * 获取重复指定次数的字符串 * @param str 要重复的字符串 * @param repeatCount 重复次数 * @return 重复指定次数后的字符串 */ public static String repeat(String str, int repeatCount) { if (repeatCount <= 0) { return ""; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < repeatCount; i++) { sb.append(str); } return sb.toString(); } /** * 获取字符串的长度(考虑Unicode扩展字符) * @param str 要获取长度的字符串 * @return 字符串的长度 */ public static int length(String str) { if (isEmpty(str)) { return 0; } return str.codePointCount(0, str.length()); } /** * 判断两个字符串是否相等(忽略大小写) * @param str1 字符串1 * @param str2 字符串2 * @return 如果两个字符串相等则返回true,否则返回false */ public static boolean equalsIgnoreCase(String str1, String str2) { return str1.equalsIgnoreCase(str2); } /** * 判断字符串是否为数字 * @param str 要判断的字符串 * @return 如果字符串为数字则返回true,否则返回false */ public static boolean isNumeric(String str) { if (isEmpty(str)) { return false; } for (char c : str.toCharArray()) { if (!Character.isDigit(c)) { return false; } } return true; } }