Spring Utils工具类常用方法实例

 更新时间:2020年04月24日 11:08:07   作者:海之浪子  
这篇文章主要介绍了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, 0, prefix, 0, 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, 0, 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, pos, 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);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IDEA2020如何打开Run Dashboard的方法步骤

    IDEA2020如何打开Run Dashboard的方法步骤

    这篇文章主要介绍了IDEA2020如何打开Run Dashboard的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Spring boot redis cache的key的使用方法

    Spring boot redis cache的key的使用方法

    这篇文章主要介绍了Spring boot redis cache的key的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 详解IDEA的快捷键及智能提示

    详解IDEA的快捷键及智能提示

    这篇文章主要介绍了详解IDEA的快捷键及智能提示,文中有非常详细的快捷键及智能提示的说明,对正在使用IDEA的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • 概述java虚拟机中类的加载器及类加载过程

    概述java虚拟机中类的加载器及类加载过程

    这篇文章主要介绍了概述java虚拟机中类的加载器及类加载过程,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java使用poi组件导出Excel格式数据

    Java使用poi组件导出Excel格式数据

    这篇文章主要介绍了Java使用poi组件导出Excel格式数据,需要的朋友可以参考下
    2020-02-02
  • SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤操作

    SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤操作

    这篇文章主要介绍了SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤操作,主要使用Jpa连接数据库对数据进行排序、分页、条件查询和过滤操作,需要的朋友可以参考下
    2023-05-05
  • spring声明式事务解析

    spring声明式事务解析

    这篇文章主要为大家详细介绍了spring声明式事务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • SSH框架实现表单上传图片实例代码

    SSH框架实现表单上传图片实例代码

    本篇文章主要介绍了SSH框架实现表单上传图片实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java关键字、标识符、常量、变量语法详解

    Java关键字、标识符、常量、变量语法详解

    这篇文章主要为大家详细介绍了Java关键字、标识符、常量、变量等基础语法,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Guava中这些Map技巧可以让代码量减少了50%

    Guava中这些Map技巧可以让代码量减少了50%

    guava提供了非常强大的操作,可以让我们把java代码写的很简洁,下面这篇文章主要给大家介绍了关于Guava中这些Map使用技巧可以让代码量减少了50%的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论