字符串工具类---StringUtils
生活随笔
收集整理的這篇文章主要介紹了
字符串工具类---StringUtils
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 字符串工具類* * @author Mr.wang*/
public class StringUtils extends org.apache.commons.lang3.StringUtils
{/** 空字符串 */private static final String NULLSTR = "";/** 下劃線 */private static final char SEPARATOR = '_';/*** 獲取參數不為空值* * @param value defaultValue 要判斷的value* @return value 返回值*/public static <T> T nvl(T value, T defaultValue){return value != null ? value : defaultValue;}/*** * 判斷一個Collection是否為空, 包含List,Set,Queue* * @param coll 要判斷的Collection* @return true:為空 false:非空*/public static boolean isEmpty(Collection<?> coll){return isNull(coll) || coll.isEmpty();}/*** * 判斷一個Collection是否非空,包含List,Set,Queue* * @param coll 要判斷的Collection* @return true:非空 false:空*/public static boolean isNotEmpty(Collection<?> coll){return !isEmpty(coll);}/*** * 判斷一個對象數組是否為空* * @param objects 要判斷的對象數組** @return true:為空 false:非空*/public static boolean isEmpty(Object[] objects){return isNull(objects) || (objects.length == 0);}/*** * 判斷一個對象數組是否非空* * @param objects 要判斷的對象數組* @return true:非空 false:空*/public static boolean isNotEmpty(Object[] objects){return !isEmpty(objects);}/*** * 判斷一個Map是否為空* * @param map 要判斷的Map* @return true:為空 false:非空*/public static boolean isEmpty(Map<?, ?> map){return isNull(map) || map.isEmpty();}/*** * 判斷一個Map是否為空* * @param map 要判斷的Map* @return true:非空 false:空*/public static boolean isNotEmpty(Map<?, ?> map){return !isEmpty(map);}/*** * 判斷一個字符串是否為空串* * @param str String* @return true:為空 false:非空*/public static boolean isEmpty(String str){return isNull(str) || NULLSTR.equals(str.trim());}/*** * 判斷一個字符串是否為非空串* * @param str String* @return true:非空串 false:空串*/public static boolean isNotEmpty(String str){return !isEmpty(str);}/*** * 判斷一個對象是否為空* * @param object Object* @return true:為空 false:非空*/public static boolean isNull(Object object){return object == null;}/*** * 判斷一個對象是否非空* * @param object Object* @return true:非空 false:空*/public static boolean isNotNull(Object object){return !isNull(object);}/*** * 判斷一個對象是否是數組類型(Java基本型別的數組)* * @param object 對象* @return true:是數組 false:不是數組*/public static boolean isArray(Object object){return isNotNull(object) && object.getClass().isArray();}/*** 去空格*/public static String trim(String str){return (str == null ? "" : str.trim());}/*** 截取字符串* * @param str 字符串* @param start 開始* @return 結果*/public static String substring(final String str, int start){if (str == null){return NULLSTR;}if (start < 0){start = str.length() + start;}if (start < 0){start = 0;}if (start > str.length()){return NULLSTR;}return str.substring(start);}/*** 截取字符串* * @param str 字符串* @param start 開始* @param end 結束* @return 結果*/public static String substring(final String str, int start, int end){if (str == null){return NULLSTR;}if (end < 0){end = str.length() + end;}if (start < 0){start = str.length() + start;}if (end > str.length()){end = str.length();}if (start > end){return NULLSTR;}if (start < 0){start = 0;}if (end < 0){end = 0;}return str.substring(start, end);}/*** 格式化文本, {} 表示占位符<br>* 此方法只是簡單將占位符 {} 按照順序替換為參數<br>* 如果想輸出 {} 使用 \\轉義 { 即可,如果想輸出 {} 之前的 \ 使用雙轉義符 \\\\ 即可<br>* 例:<br>* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>* 轉義{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>* 轉義\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>* * @param template 文本模板,被替換的部分用 {} 表示* @param params 參數值* @return 格式化后的文本*/public static String format(String template, Object... params){if (isEmpty(params) || isEmpty(template)){return template;}return StrFormatter.format(template, params);}/*** 是否為http(s)://開頭* * @param link 鏈接* @return 結果*/public static boolean ishttp(String link){return StringUtils.startsWithAny(link, "http://", "https://");}/*** 字符串轉set* * @param str 字符串* @param sep 分隔符* @return set集合*/public static final Set<String> str2Set(String str, String sep){return new HashSet<String>(str2List(str, sep, true, false));}/*** 字符串轉list* * @param str 字符串* @param sep 分隔符* @param filterBlank 過濾純空白* @param trim 去掉首尾空白* @return list集合*/public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim){List<String> list = new ArrayList<String>();if (StringUtils.isEmpty(str)){return list;}// 過濾空白字符串if (filterBlank && StringUtils.isBlank(str)){return list;}String[] split = str.split(sep);for (String string : split){if (filterBlank && StringUtils.isBlank(string)){continue;}if (trim){string = string.trim();}list.add(string);}return list;}/*** 查找指定字符串是否包含指定字符串列表中的任意一個字符串同時串忽略大小寫** @param cs 指定字符串* @param searchCharSequences 需要檢查的字符串數組* @return 是否包含任意一個字符串*/public static boolean containsAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences){if (isEmpty(cs) || isEmpty(searchCharSequences)){return false;}for (CharSequence testStr : searchCharSequences){if (containsIgnoreCase(cs, testStr)){return true;}}return false;}/*** 駝峰轉下劃線命名*/public static String toUnderScoreCase(String str){if (str == null){return null;}StringBuilder sb = new StringBuilder();// 前置字符是否大寫boolean preCharIsUpperCase = true;// 當前字符是否大寫boolean curreCharIsUpperCase = true;// 下一字符是否大寫boolean nexteCharIsUpperCase = true;for (int i = 0; i < str.length(); i++){char c = str.charAt(i);if (i > 0){preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));}else{preCharIsUpperCase = false;}curreCharIsUpperCase = Character.isUpperCase(c);if (i < (str.length() - 1)){nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));}if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase){sb.append(SEPARATOR);}else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase){sb.append(SEPARATOR);}sb.append(Character.toLowerCase(c));}return sb.toString();}/*** 是否包含字符串* * @param str 驗證字符串* @param strs 字符串組* @return 包含返回true*/public static boolean inStringIgnoreCase(String str, String... strs){if (str != null && strs != null){for (String s : strs){if (str.equalsIgnoreCase(trim(s))){return true;}}}return false;}/*** 將下劃線大寫方式命名的字符串轉換為駝峰式。如果轉換前的下劃線大寫方式命名的字符串為空,則返回空字符串。 例如:HELLO_WORLD->HelloWorld* * @param name 轉換前的下劃線大寫方式命名的字符串* @return 轉換后的駝峰式命名的字符串*/public static String convertToCamelCase(String name){StringBuilder result = new StringBuilder();// 快速檢查if (name == null || name.isEmpty()){// 沒必要轉換return "";}else if (!name.contains("_")){// 不含下劃線,僅將首字母大寫return name.substring(0, 1).toUpperCase() + name.substring(1);}// 用下劃線將原始字符串分割String[] camels = name.split("_");for (String camel : camels){// 跳過原始字符串中開頭、結尾的下換線或雙重下劃線if (camel.isEmpty()){continue;}// 首字母大寫result.append(camel.substring(0, 1).toUpperCase());result.append(camel.substring(1).toLowerCase());}return result.toString();}/*** 駝峰式命名法 例如:user_name->userName*/public static String toCamelCase(String s){if (s == null){return null;}s = s.toLowerCase();StringBuilder sb = new StringBuilder(s.length());boolean upperCase = false;for (int i = 0; i < s.length(); i++){char c = s.charAt(i);if (c == SEPARATOR){upperCase = true;}else if (upperCase){sb.append(Character.toUpperCase(c));upperCase = false;}else{sb.append(c);}}return sb.toString();}/*** 查找指定字符串是否匹配指定字符串列表中的任意一個字符串* * @param str 指定字符串* @param strs 需要檢查的字符串數組* @return 是否匹配*/public static boolean matches(String str, List<String> strs){if (isEmpty(str) || isEmpty(strs)){return false;}for (String pattern : strs){if (isMatch(pattern, str)){return true;}}return false;}/*** 判斷url是否與規則配置: * ? 表示單個字符; * * 表示一層路徑內的任意字符串,不可跨層級; * ** 表示任意層路徑;* * @param pattern 匹配規則* @param url 需要匹配的url* @return*/public static boolean isMatch(String pattern, String url){AntPathMatcher matcher = new AntPathMatcher();return matcher.match(pattern, url);}@SuppressWarnings("unchecked")public static <T> T cast(Object obj){return (T) obj;}
}
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的字符串工具类---StringUtils的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL---JDBC基础6步
- 下一篇: 字符串格式化---StrFormatte