Springboot工具类StringUtils使用教程

目录
  • org.springframework.util.StringUtils
  • 字符串操作

在实际的业务开发中,除了经常有针对对象的判断或操作以外,经常也会遇到的就是字符串的判断和操作。比如判断字符串是否为空、是否以某个字符结尾、去除头部和尾部的空白字符、字符的查找和替换。在Spring的核心包中存在这样一个类org.springframework.util.StringUtils,它提供了常见的关于字符串的判断和操作的静态方法。下面咱们针对一些常见的一块学习一下,顺便再把前面说的断言给复习一下:

org.springframework.util.StringUtils

字符串判断

判断字符串是否为 null,或 ""。注意,包含空白符的字符串为非空。

booleanisEmpty(Objectstr)

@Test
public void test() {
    String name = "";
    boolean empty = StringUtils.isEmpty(name);
    Assert.isTrue(empty, "变量name是有值的");
    System.out.println("给name赋值为zhangsan");
    name = "zhangsan";
    boolean empty1 = StringUtils.isEmpty(name);
    Assert.isTrue(empty1, "变更name是有值的");
}

判断字符串是否是以指定内容结束。忽略大小写。

booleanendsWithIgnoreCase(Stringstr,Stringsuffix)

@Test
public void test2() {
    String name = "zhangsanAK";
    boolean ak = StringUtils.endsWithIgnoreCase(name, "ak");
    Assert.isTrue(ak, "变量name不是以ak结尾的");
    boolean akb = StringUtils.endsWithIgnoreCase(name, "akb");
    Assert.isTrue(akb, "变量name不是以akb结尾的");
}

判断字符串是否已指定内容开头。忽略大小写。

booleanstartsWithIgnoreCase(Stringstr,Stringprefix)

@Test
public void test3() {
    String name = "OKzhangsan";
    boolean ok = StringUtils.startsWithIgnoreCase(name, "ok");
    Assert.isTrue(ok, "变量name不是以ak结尾的");
    boolean abc = StringUtils.startsWithIgnoreCase(name, "abc");
    Assert.isTrue(abc, "变量name不是以abc开始的");
}

是否包含空白符。

booleancontainsWhitespace(Stringstr)

@Test
public void test4() {
    String name = "OK zhangsan";
    boolean spaceFlag = StringUtils.containsWhitespace(name);
    Assert.isTrue(spaceFlag, "变量name没有包含空格");
    System.out.println("给name赋值为zhangsan");
    name = "zhangsan";
    boolean spaceFlag2 = StringUtils.containsWhitespace(name);
    Assert.isTrue(spaceFlag2, "变量name没有包含空格");
}

判断字符串非空且长度不为 0,即,Not Empty。

booleanhasLength(CharSequence str)

@Test
public void test5() {
    String name = "zhangsan";
    boolean lengthFlag = StringUtils.hasLength(name);
    Assert.isTrue(lengthFlag, "变量name非空,但是长度为0");
    System.out.println("给name赋值为一个空字符串");
    name = " ";
    boolean lengthFlag2 = StringUtils.hasLength(name);
    Assert.isTrue(lengthFlag2, "变量name非空,但是长度为0");
    System.out.println("给name赋值为一个空字符串,但长度为0");
    name = "";
    boolean lengthFlag3 = StringUtils.hasLength(name);
    Assert.isTrue(lengthFlag3, "变量name非空,但是长度为0");
}

判断字符串是否包含实际内容,即非仅包含空白符,也就是 Not Blank。这里要特别注意一下,通常empty是指null、“”,“ ”,多个空字符就不会认为是Empty了,而是Blank;

booleanhasText(CharSequence str)

@Test
public void test6() {
    String name = "zhangsan";
    boolean lengthFlag = StringUtils.hasText(name);
    Assert.isTrue(lengthFlag, "变量name非空,但是长度为0");
    System.out.println("给name赋值为一个空字符串");
    name = "      ";
    boolean lengthFlag2 = StringUtils.hasText(name);
    Assert.isTrue(lengthFlag2, "变量是一个空字符");
}

判断字符串指定索引处是否包含一个子串。

booleansubstringMatch(CharSequence str, int index, CharSequence substring)

@Test
public void test7() {
    String msg = "I am zhangsan";
    boolean lengthFlag = StringUtils.substringMatch(msg, 5, "zhangsan");
    Assert.isTrue(lengthFlag, "变量msg的索引位置为5的地方,是zhangsan");
    msg = "I am not zhangsan";
    boolean lengthFlag2 = StringUtils.substringMatch(msg, 5, "zhangsan");
    Assert.isTrue(lengthFlag2, "变量msg的索引位置为5的地方,是zhangsan");
}

计算一个字符串中指定子串的出现次数。

int countOccurrencesOf(Stringstr,Stringsub)

@Test
public void test8() {
    String msg = "aaa";
    int count = StringUtils.countOccurrencesOf(msg, "a");
    Assert.isTrue(count == 3, "变量msg中没有包含3个a");
    msg = "bbb";
    int count2 = StringUtils.countOccurrencesOf(msg, "b");
    Assert.isTrue(count2==4, "变量msg中没有包含4个b");
}

字符串操作

查找并替换指定子串。

String replace(String inString, String oldPattern, String newPattern)

@Test
public void test10() {
    String name = "aba";
    String name2 = StringUtils.replace(name, "b", "a");
    Assert.isTrue(name2.equals("aaa"), "变量name替换b后结果不是aaa");
}

去除尾部的特定字符。

String trimTrailingCharacter(String str, char trailingCharacter)

@Test
public void test11() {
    String name = "aba";
    String a = StringUtils.trimTrailingCharacter(name, 'a');
    Assert.isTrue(a.equals("ab"), "去除尾部的a后不是ab");
}

去除头部的特定字符。

String trimLeadingCharacter(String str, char leadingCharacter)

@Test
public void test12() {
    String name = "aba";
    String a = StringUtils.trimLeadingCharacter(name, 'a');
    Assert.isTrue(a.equals("ba"), "去除开头的a后不是ba");
}

去除头部的空白符。

String trimLeadingWhitespace(String str)

@Test
public void test13() {
    String name = "aba  ";
    String a = StringUtils.trimTrailingWhitespace(name);
    Assert.isTrue(a.equals("aba"), "去除尾部的空格失败了");
}

去除头部的空白符。

String trimTrailingWhitespace(String str)

@Test
public void test14() {
    String name = "   aba";
    String a = StringUtils.trimLeadingWhitespace(name);
    Assert.isTrue(a.equals("aba"), "去除开头的空格失败了");
}

去除头部和尾部的空白符。

String trimWhitespace(String str)

@Test
public void test15() {
    String name = "   aba    ";
    String a = StringUtils.trimWhitespace(name);
    Assert.isTrue(a.equals("aba"), "去除开头和尾部的空格失败了");
}

删除开头、结尾和中间的空白符。

String trimAllWhitespace(String str)

@Test
public void test16() {
    String name = "   a   b   a    ";
    String a = StringUtils.trimAllWhitespace(name);
    Assert.isTrue(a.equals("aba"), "去除开头、中间、尾部的空格失败了");
}

删除指定子串。

String delete(String inString, String pattern)

@Test
public void test17() {
    String name = "abcabc";
    String a = StringUtils.delete(name,"bc");
    Assert.isTrue(a.equals("aa"), "删除变更name里的字符b失败了");
}

对数组的每一项执行 trim() 方法。

String[] trimArrayElements(String[] array)

@Test
public void test18() {
    String[] names = {" zhangsan " ," li si "};
    String[] arr = StringUtils.trimArrayElements(names);
    for (String s : arr) {
        Assert.isTrue(s.equals("zhangsan")||s.equals("lisi"), "字符"+s+"中没有包含zhangsan或lisi");
    }
}

将 URL 字符串进行解码。

String uriDecode(String source, Charset charset)

@Test
public void test19() {
    String result="http://localhost:8080/abc?name=zhangsan";
    String url="http%3A%2F%2Flocalhost%3A8080%2Fabc%3Fname%3Dzhangsan";
    String tmp = StringUtils.uriDecode(url, Charset.forName("utf-8"));
    Assert.isTrue(result.equals(tmp), "解码失败");
}

到此这篇关于Springboot工具类StringUtils使用教程的文章就介绍到这了,更多相关Springboot StringUtils内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot 内置工具类的使用

    目录 断言 对象.数组.集合 ObjectUtils StringUtils CollectionUtils 文件.资源.IO 流 FileCopyUtils ResourceUtils StreamUtils 反射.AOP ReflectionUtils AopUtils AopContext 断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert

  • Springboot内置的工具类之CollectionUtils示例讲解

    前言 实际业务开发中,集合的判断和操作也是经常用到的,Spring也针对集合的判断和操作封装了一些方法,但是最令我惊讶的是,我在梳理这些内容的过程中发现了一些有趣的现象,我的第一反应是不敢相信,再想一想,没错,我是对的.所以强烈建议大家可以认真看完这篇文章,这一篇绝对有价值,因为有趣的是我我竟然发现了Spring的两个bug. org.springframework.util.CollectionUtils 集合的判断 boolean hasUniqueObject(Collection col

  • 使用springboot在工具类中读取配置文件(ClassPathResource)

    springboot工具类中读取配置文件 1.创建配置文件(application.properties) spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.in-memory=true spring.activemq.pool.enabled=false 2.创建工具类(PropertiesUtil.

  • Springboot如何通过自定义工具类获取bean

    目录 Springboot 自定义工具类获取bean 在工具类注入bean的三种方式 1. 需求/目的 2.使用环境 3.方法一:获取ApplicationContext上下文 4.方法二:将工具类的对象也添加为bean 5.方法三:在spring Boot 启动时创建工具类自身的静态对象 Springboot 自定义工具类获取bean /** * Created with IntelliJ IDEA. * * @Auther: zp * @Date: 2021/03/26/13:32 * @D

  • Springboot基础之RedisUtils工具类

    SpringBoot整合Redis 引入Redis依赖 <!-- redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 设置Redis的Template RedisConfig.java package cn

  • Springboot工具类StringUtils使用教程

    目录 org.springframework.util.StringUtils 字符串操作 在实际的业务开发中,除了经常有针对对象的判断或操作以外,经常也会遇到的就是字符串的判断和操作.比如判断字符串是否为空.是否以某个字符结尾.去除头部和尾部的空白字符.字符的查找和替换.在Spring的核心包中存在这样一个类org.springframework.util.StringUtils,它提供了常见的关于字符串的判断和操作的静态方法.下面咱们针对一些常见的一块学习一下,顺便再把前面说的断言给复习一下

  • Springboot工具类FileCopyUtils使用教程

    目录 前言 Resource FileCopyUtils StreamUtils 前言 Spring内置的工具类里,最喜欢用的就是文件读写这一部分,虽然原生的写法也没几句,但是就是懒,不想循环.判断什么的,直接调用现成的静态方法,多高效,哈哈,这就是懒人必备. Resource Spring中主要通过org.springframework.core.io.Resource接口描述一个文件资源的位置信息,其常用的实现类有四个,分别是FileSystemResource.UrlResource.Cl

  • Springboot工具类ReflectionUtils使用教程

    目录 前言 ReflectionUtils 对属性的操作 对方法的操作 前言 ReflectionUtils应该是Springboot内置工具类梳理的最后一篇了,可能很多人都没有听说过这个工具类,这个类封装的是一些与java反射相关的静态工具方法.可能很多人也知道反射,却不怎么经常使用反射.其实反射是一个很有用的技术点,我认为是可以和AOP比肩的,甚至有过之而不及.大家都知道AOP是面向切面编程,可以在定义的切面前.后执行一些操作,但是反射更厉害,它可以在程序运行时,对已装载的任意类的属性和方法

  • javaScript字符串工具类StringUtils详解

    本文实例为大家分享了javaScript字符串工具类的具体代码,供大家参考,具体内容如下 StringUtils = { isEmpty: function(input) { return input == null || input == ''; }, isNotEmpty: function(input) { return !this.isEmpty(input); }, isBlank: function(input) { return input == null || /^\s*$/.t

  • hutool 工具类基本使用教程

    在之前没有接触到这个工具类的时候,感觉自己好像根本就不知道这个的存在,再次之前没有一个完善的知识体系,但是在发现这个工具类之后,才真的发现这个工具类是真的好用,下面我就简单的介绍一下关于这个工具类的使用,主要参考的是这几个博客 hutool官方文档 我们下载:https://www.jb51.net/softs/549331.html 简单介绍: 博主这边的一个简单介绍 https://www.jb51.net/article/230880.htm Hutool 常用的一些方法简介: 简介 Hu

  • android自动生成dimens适配文件的图文教程详解(无需Java工具类)

    在编写ui界面时因为手机分辨率大小不同,所以展现出来的效果也是不同的,这个时候就需要考虑适配器,让根据手机分辨率自动适配相应尺寸来展示界面,可以提高用户的体验感. 1.首先安装插件ScreenMatch,安装成功之后android studio会提示重启 2.在res->values下创建一个dimens文件,将以下代码复制进去.如果不创建这个文件一下操作会不成功导致项目重启. <dimen name="common_margin">@dimen/dp_15</

  • SpringBoot整合Jackson超详细用法(附Jackson工具类)

    目录 一.Jackson简介 二.Json简介 三.springboot整合Jackson 1.创建项目 2.导入坐标 3.配置文件 4.实体类 5.测试类 一.Jackson简介 说明:本篇讲的是Jackson的详细用法,Jackson工具类在文章最后,直接复制粘贴即可使用. Jackson是公司中必用的组件之一,常用的还用阿里的Fastjson,但是由于一些原因bug与漏洞是在是太多,在注重安全的公司直接被pass,还有就是谷歌的Gson(这个没用过不太了解). Spring MVC 的默认

  • Springboot Mybatis Plus自动生成工具类详解代码

    前言 代码生成器,也叫逆向工程,是根据数据库里的表结构,自动生成对应的实体类.映射文件和接口. 看到很多小伙伴在为数据库生成实体类发愁,现分享给大家,提高开发效率. 一.pom依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> &

随机推荐