1. 程式人生 > 程式設計 >Spring Utils工具類常用方法例項

Spring Utils工具類常用方法例項

Spring提供的工具類,主要用於框架內部使用,這個類提供了一些簡單的方法,並且提供了易於使用的方法在分割字串,如CSV字串,以及集合和陣列。

StringUtils提供常用的方法如下:

判斷物件物件是否為null或者空字串

public static boolean isEmpty(@Nullable Object str) {
	return (str == null || "".equals(str));
}

判斷給的序列是否為空或者length為0

public static boolean hasLength(@Nullable CharSequence str) {
	return (str != null && str.length() > 0);
}

	public static boolean hasLength(@Nullable String str) {
		return (str != null && !str.isEmpty());
	}

判斷字串是否以某個字串開頭

public static boolean startsWithIgnoreCase(@Nullable String str,@Nullable String prefix) {
	return (str != null && prefix != null && str.length() >= prefix.length() &&
			str.regionMatches(true,prefix,prefix.length()));
}

判斷字串是否以某個字串結尾

public static boolean endsWithIgnoreCase(@Nullable String str,@Nullable String suffix) {
	return (str != null && suffix != null && str.length() >= suffix.length() &&
			str.regionMatches(true,str.length() - suffix.length(),suffix,suffix.length()));
}

用另一個字串替換字串中出現的所有子字串

public static String replace(String inString,String oldPattern,@Nullable String newPattern) {
		if (!hasLength(inString) || !hasLength(oldPattern) || newPattern == null) {
			return inString;
		}
		//oldPattern字串第一次出現的位置
		int index = inString.indexOf(oldPattern);
		if (index == -1) {
			// no occurrence -> can return input as-is
			return inString;
		}
		//字串長度
	int capacity = inString.length();
	if (newPattern.length() > oldPattern.length()) {
		capacity += 16;
	}
	StringBuilder sb = new StringBuilder(capacity);

	int pos = 0; // our position in the old string
	int patLen = oldPattern.length();
	while (index >= 0) {
		sb.append(inString,pos,index);
		sb.append(newPattern);
		pos = index + patLen;
		index = inString.indexOf(oldPattern,pos);
	}

	// append any characters to the right of a match
	sb.append(inString,inString.length());
	return sb.toString();
}

根據給定的路徑規範化路徑

public static String cleanPath(String path) {
		if (!hasLength(path)) {
			return path;
		}
  //用新字串替換舊字串
	String pathToUse = replace(path,WINDOWS_FOLDER_SEPARATOR,FOLDER_SEPARATOR);
	// Shortcut if there is no work to do
	if (pathToUse.indexOf('.') == -1) {
		return pathToUse;
	}

	// Strip prefix from path to analyze,to not treat it as part of the
	// first path element. This is necessary to correctly parse paths like
	// "file:core/../core/io/Resource.class",where the ".." should just
	// strip the first "core" directory while keeping the "file:" prefix.
	int prefixIndex = pathToUse.indexOf(':');
	String prefix = "";
	if (prefixIndex != -1) {
		prefix = pathToUse.substring(0,prefixIndex + 1);
		if (prefix.contains(FOLDER_SEPARATOR)) {
			prefix = "";
		}
		else {
			pathToUse = pathToUse.substring(prefixIndex + 1);
		}
	}
	if (pathToUse.startsWith(FOLDER_SEPARATOR)) {
		prefix = prefix + FOLDER_SEPARATOR;
		pathToUse = pathToUse.substring(1);
	}

	String[] pathArray = delimitedListToStringArray(pathToUse,FOLDER_SEPARATOR);
	LinkedList<String> pathElements = new LinkedList<>();
	int tops = 0;

	for (int i = pathArray.length - 1; i >= 0; i--) {
		String element = pathArray[i];
		if (CURRENT_PATH.equals(element)) {
			// Points to current directory - drop it.
		}
		else if (TOP_PATH.equals(element)) {
			// Registering top path found.
			tops++;
		}
		else {
			if (tops > 0) {
				// Merging path element with element corresponding to top path.
				tops--;
			}
			else {
				// Normal path element found.
				pathElements.add(0,element);
			}
		}
	}

	// Remaining top paths need to be retained.
	for (int i = 0; i < tops; i++) {
		pathElements.add(0,TOP_PATH);
	}
	// If nothing else left,at least explicitly point to current path.
	if (pathElements.size() == 1 && "".equals(pathElements.getLast()) && !prefix.endsWith(FOLDER_SEPARATOR)) {
		pathElements.add(0,CURRENT_PATH);
	}

	return prefix + collectionToDelimitedString(pathElements,FOLDER_SEPARATOR);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。