首页 > 其他分享 >Spring Boot中的StringUtils:强大的工具类解析

Spring Boot中的StringUtils:强大的工具类解析

时间:2023-12-07 12:32:57浏览次数:32  
标签:String isTrue Spring Boot Assert boolean StringUtils name

Spring Boot中的StringUtils:强大的工具类解析_java

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

org.springframework.util.StringUtils

字符串判断

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

boolean isEmpty(Object str)

@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是有值的");
}

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

boolean endsWithIgnoreCase(String str, String suffix)

@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结尾的");
}

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

boolean startsWithIgnoreCase(String str, String prefix)

@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开始的");
}

是否包含空白符。

boolean containsWhitespace(String str)

@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。

boolean hasLength(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;

boolean hasText(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, "变量是一个空字符");
}

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

boolean substringMatch(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(String str, String sub)

@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), "解码失败");
}

标签:String,isTrue,Spring,Boot,Assert,boolean,StringUtils,name
From: https://blog.51cto.com/fanfu1024/8720242

相关文章

  • Spring Boot:Java开发者的新伙伴
    SpringBoot是一款由Pivotal团队开发的开源框架,它是Spring框架的扩展,旨在简化新生成的Spring应用程序的配置和部署。SpringBoot让Spring应用的创建更容易,因为它消除了许多样板代码和配置文件的必要性。一、SpringBoot的核心概念1.自动配置SpringBoot的自动配置特性是其吸引人......
  • Spring的后置处理器BeanPostProcessor接口的执行流程
    BeanPostProcessor的设计目标主要是提供一种扩展机制,让开发者可以在SpringBean的初始化阶段进行自定义操作。这种设计理念主要体现了Spring的一种重要原则,即“开放封闭原则”。开放封闭原则强调软件实体(类、模块、函数等等)应该对于扩展是开放的,对于修改是封闭的。在这里,Spring容......
  • springboot监听器&拦截器【转】
    1.监听器https://www.cnblogs.com/elnimo/p/15641367.htmlCommandLineRunnerhttps://blog.csdn.net/qq_34531925/article/details/82527066https://www.cnblogs.com/yanxiaoguo/p/16167221.html2.拦截器https://blog.csdn.net/qq_50652600/article/details/127250413......
  • Spring入门03Spring核心概念、DI、IOC入门案例
    Spring核心概念IoC/DIIoC容器Bean IOC入门案例IoC入门案例思路分析  IoC入门案例实现   DI入门案例 DI入门案例思路分析DI入门案例实现  ......
  • Spring MVC 的路径匹配策略
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher是一个配置项,用于设置SpringMVC的路径匹配策略。在这个例子中,它设置为使用AntPathMatcher(Ant风格的路径匹配器)。AntPathMatcher是一种基于Ant构建工具的路径匹配算法,它可以支持更灵活的路径模式匹配。通过将......
  • Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第一章、传统SSM开发回顾以及问题Spring+SpringMVC+MybatisSSM实现一个简单功能员工添加、查询…SSM项目简单实现项目需求分析—>概要设计—>(库表设计)—>详细设计—>(验证库表正确性)—>编码(环境搭建+......
  • SpringBoot高级开发(8)SpringBoot使用Lettuce设置多个RedisTemplate实例
    copy from:https://xiaomozhang.github.io/2021/02/07/spring-boot-lettuce-multi-instance/项目pom配置使用SpringBoot集成Redis,只需要将spring-boot-starter-data-redis和commons-pool2加到依赖即可 xml<dependency><groupId>org.springframework.boot</groupId>......
  • 【SpringBootWeb入门-6】请求响应-请求参数-数组集合参数&Json参数&路径参数
    这篇我们接着上一篇的请求参数来讲解另外几个常见参数的接收以及封装:数组集合参数、Json参数、路径参数。数组集合参数1、数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数在Postman接口测试新建测试,获取请求数组参数type。然后新建参数处......
  • SpringBoot集成Jasypt实现数据加密
    1、环境说明JDK1.8+SpringBoot2.7 2、添加pom依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency> 3......
  • Command line is too long. Shorten command line for xxx or also for Spring Boot d
    Commandlineistoolong.ShortencommandlineforxxxoralsoforSpringBootdefaultconfiguration主要是命令行太长了,导致项目启动不成功目录一、情景再现:二、分析原因:三、解决方法: 1、点击启动类编译文件:2、修改命令行的方式,shortencommandline 选项选择......