From 2f55cebbad3dea187a5f91d16ec80a9677dab699 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 13 十一月 2024 11:16:53 +0800
Subject: [PATCH] 1

---
 src/main/java/com/yssh/utils/StringUtils.java |  521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 521 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/yssh/utils/StringUtils.java b/src/main/java/com/yssh/utils/StringUtils.java
new file mode 100644
index 0000000..739aec1
--- /dev/null
+++ b/src/main/java/com/yssh/utils/StringUtils.java
@@ -0,0 +1,521 @@
+package com.yssh.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.springframework.util.AntPathMatcher;
+
+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;
+	}
+
+	/**
+	 * * 鍒ゆ柇涓�涓狢ollection鏄惁涓虹┖锛� 鍖呭惈List锛孲et锛孮ueue
+	 *
+	 * @param coll
+	 *            瑕佸垽鏂殑Collection
+	 * @return true锛氫负绌� false锛氶潪绌�
+	 */
+	public static boolean isEmpty(Collection<?> coll) {
+		return isNull(coll) || coll.isEmpty();
+	}
+
+	/**
+	 * * 鍒ゆ柇涓�涓狢ollection鏄惁闈炵┖锛屽寘鍚獿ist锛孲et锛孮ueue
+	 *
+	 * @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);
+	}
+
+	/**
+	 * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+	 *
+	 * @param map
+	 *            瑕佸垽鏂殑Map
+	 * @return true锛氫负绌� false锛氶潪绌�
+	 */
+	public static boolean isEmpty(Map<?, ?> map) {
+		return isNull(map) || map.isEmpty();
+	}
+
+	/**
+	 * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+	 *
+	 * @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);
+	}
+
+	/**
+	 * * 鍒ゆ柇涓�涓璞℃槸鍚︽槸鏁扮粍绫诲瀷锛圝ava鍩烘湰鍨嬪埆鐨勬暟缁勶級
+	 *
+	 * @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);
+	}
+
+	/**
+	 * 瀛楃涓茶浆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;
+	}
+
+	/**
+	 * 鍒ゆ柇缁欏畾鐨剆et鍒楄〃涓槸鍚﹀寘鍚暟缁刟rray 鍒ゆ柇缁欏畾鐨勬暟缁刟rray涓槸鍚﹀寘鍚粰瀹氱殑鍏冪礌value
+	 *
+	 * @param 缁欏畾鐨勯泦鍚�
+	 * @param array
+	 *            缁欏畾鐨勬暟缁�
+	 * @return boolean 缁撴灉
+	 */
+	public static boolean containsAny(Collection<String> collection,
+			String... array) {
+		if (isEmpty(collection) || isEmpty(array)) {
+			return false;
+		} else {
+			for (String str : array) {
+				if (collection.contains(str)) {
+					return true;
+				}
+			}
+			return false;
+		}
+	}
+
+	/**
+	 * 鏌ユ壘鎸囧畾瀛楃涓叉槸鍚﹀寘鍚寚瀹氬瓧绗︿覆鍒楄〃涓殑浠绘剰涓�涓瓧绗︿覆鍚屾椂涓插拷鐣ュぇ灏忓啓
+	 *
+	 * @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;
+	}
+
+	/**
+	 * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆傚鏋滆浆鎹㈠墠鐨勪笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆涓虹┖锛屽垯杩斿洖绌哄瓧绗︿覆銆�
+	 * 渚嬪锛欻ELLO_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();
+	}
+
+	/**
+	 * 椹煎嘲寮忓懡鍚嶆硶 渚嬪锛歶ser_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;
+	}
+
+	/**
+	 * 鏁板瓧宸﹁竟琛ラ綈0锛屼娇涔嬭揪鍒版寚瀹氶暱搴︺�傛敞鎰忥紝濡傛灉鏁板瓧杞崲涓哄瓧绗︿覆鍚庯紝闀垮害澶т簬size锛屽垯鍙繚鐣� 鏈�鍚巗ize涓瓧绗︺��
+	 *
+	 * @param num
+	 *            鏁板瓧瀵硅薄
+	 * @param size
+	 *            瀛楃涓叉寚瀹氶暱搴�
+	 * @return 杩斿洖鏁板瓧鐨勫瓧绗︿覆鏍煎紡锛岃瀛楃涓蹭负鎸囧畾闀垮害銆�
+	 */
+	public static final String padl(final Number num, final int size) {
+		return padl(num.toString(), size, '0');
+	}
+
+	/**
+	 * 瀛楃涓插乏琛ラ綈銆傚鏋滃師濮嬪瓧绗︿覆s闀垮害澶т簬size锛屽垯鍙繚鐣欐渶鍚巗ize涓瓧绗︺��
+	 *
+	 * @param s
+	 *            鍘熷瀛楃涓�
+	 * @param size
+	 *            瀛楃涓叉寚瀹氶暱搴�
+	 * @param c
+	 *            鐢ㄤ簬琛ラ綈鐨勫瓧绗�
+	 * @return 杩斿洖鎸囧畾闀垮害鐨勫瓧绗︿覆锛岀敱鍘熷瓧绗︿覆宸﹁ˉ榻愭垨鎴彇寰楀埌銆�
+	 */
+	public static final String padl(final String s, final int size, final char c) {
+		final StringBuilder sb = new StringBuilder(size);
+		if (s != null) {
+			final int len = s.length();
+			if (s.length() <= size) {
+				for (int i = size - len; i > 0; i--) {
+					sb.append(c);
+				}
+				sb.append(s);
+			} else {
+				return s.substring(len - size, len);
+			}
+		} else {
+			for (int i = size; i > 0; i--) {
+				sb.append(c);
+			}
+		}
+		return sb.toString();
+	}
+}
\ No newline at end of file

--
Gitblit v1.9.3