Spring 框架给我们提供的StringUtils是我们判断字符串常用的方法,
但是有很多人一直非空判断很混乱,下面做一下总结

方法/步骤


StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
//注意在 StringUtils 中空格作非空处理
StringUtils.isEmpty("   ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = falseStringUtils.hasText(null) = false;  StringUtils.hasText("") = false;  StringUtils.hasText(" ") = false;  StringUtils.hasText("12345") = true;  StringUtils.hasText(" 12345 ") = true;  StringUtils.hasLength(null) = false;  StringUtils.hasLength("") = false;  StringUtils.hasLength(" ") = true;  StringUtils.hasLength("Hello") = true;  //是否包含空白字符  StringUtils.containsWhitespace(null)=false;  StringUtils.containsWhitespace("")=false;  StringUtils.containsWhitespace("a")=false;  StringUtils.containsWhitespace("abc")=false;  StringUtils.containsWhitespace("abc")=false;  StringUtils.containsWhitespace(" ")=true;  StringUtils.containsWhitespace(" a")=true;  StringUtils.containsWhitespace("abc ")=true;  StringUtils.containsWhitespace("a b")=true  StringUtils.containsWhitespace("a  b")  StringUtils.trimWhitespace(null)=null;  StringUtils.trimWhitespace("")="";  StringUtils.trimWhitespace(" ")="";  StringUtils.trimWhitespace("/t")="";  StringUtils.trimWhitespace(" a")="a";  StringUtils.trimWhitespace("a ")="a";  StringUtils.trimWhitespace(" a ")="a";  StringUtils.trimWhitespace(" a b ")="a b";  StringUtils.trimLeadingWhitespace(null)=null;  StringUtils.trimLeadingWhitespace("")="";  StringUtils.trimLeadingWhitespace(" ")="";  StringUtils.trimLeadingWhitespace("/t")="";  StringUtils.trimLeadingWhitespace(" a")="a";  StringUtils.trimLeadingWhitespace("a ")="a ";  StringUtils.trimLeadingWhitespace(" a ")="a ";  StringUtils.trimLeadingWhitespace(" a b ")="a b "  StringUtils.trimLeadingWhitespace(" a b  c ")="a b  c "  StringUtils.trimTrailingWhitespace(null)=null;  StringUtils.trimTrailingWhitespace(" ")="";  StringUtils.trimTrailingWhitespace("/t")="";  StringUtils.trimTrailingWhitespace("a ")="a";  StringUtils.trimTrailingWhitespace(" a")=" a";  StringUtils.trimTrailingWhitespace(" a ")=" a";  StringUtils.trimTrailingWhitespace(" a b ")=" a b";  StringUtils.trimTrailingWhitespace(" a b  c ")=" a b  c";  StringUtils.trimAllWhitespace("")="";  StringUtils.trimAllWhitespace(" ")="";  StringUtils.trimAllWhitespace("/t")="";  StringUtils.trimAllWhitespace(" a")="a";  StringUtils.trimAllWhitespace("a ")="a";  StringUtils.trimAllWhitespace(" a ")="a";  StringUtils.trimAllWhitespace(" a b ")="ab";  StringUtils.trimAllWhitespace(" a b  c "="abc";  // 统计一个子字符串在字符串出现的次数  StringUtils.countOccurrencesOf(null, null) == 0;  StringUtils.countOccurrencesOf("s", null) == 0;  StringUtils.countOccurrencesOf(null, "s") == 0;  StringUtils.countOccurrencesOf("erowoiueoiur", "WERWER") == 0;  StringUtils.countOccurrencesOf("erowoiueoiur", "x")=0;  StringUtils.countOccurrencesOf("erowoiueoiur", " ") == 0;  StringUtils.countOccurrencesOf("erowoiueoiur", "") == 0;  StringUtils.countOccurrencesOf("erowoiueoiur", "e") == 2;  StringUtils.countOccurrencesOf("erowoiueoiur", "oi") == 2;  StringUtils.countOccurrencesOf("erowoiueoiur", "oiu") == 2;  StringUtils.countOccurrencesOf("erowoiueoiur", "oiur") == 1;  StringUtils.countOccurrencesOf("erowoiueoiur", "r") == 2;  //字符串替换  String inString = "a6AazAaa77abaa";  String oldPattern = "aa";  String newPattern = "foo";  // Simple replace  String s = StringUtils.replace(inString, oldPattern, newPattern);  s.equals("a6AazAfoo77abfoo")=true;  // Non match: no change  s = StringUtils.replace(inString, "qwoeiruqopwieurpoqwieur", newPattern);  s.equals(inString)=true  s = StringUtils.replace(inString, oldPattern, null);  s.equals(inString)=true  // Null old pattern: should ignore  s = StringUtils.replace(inString, null, newPattern);  s.equals(inString)=true  //删除字符串  String inString = "The quick brown fox jumped over the lazy dog";  String noThe = StringUtils.delete(inString, "the");  noThe.equals("The quick brown fox jumped over  lazy dog")=true;  String nohe = StringUtils.delete(inString, "he");  nohe.equals("T quick brown fox jumped over t lazy dog")=true;  String nosp = StringUtils.delete(inString, " ");  nosp.equals("Thequickbrownfoxjumpedoverthelazydog")=true;  String killEnd = StringUtils.delete(inString, "dog");  killEnd.equals("The quick brown fox jumped over the lazy ")=true;  String mismatch = StringUtils.delete(inString, "dxxcxcxog");  mismatch.equals(inString)=true;  //删除任何字符  //源代码如下  //char c = inString.charAt(i);  //如果不存在 c 值,则返回 -1  //if (charsToDelete.indexOf(c) == -1) {  //out.append(c);  //}  String inString = "Able was I ere I saw Elba";  String res = StringUtils.deleteAny(inString, "I");  res.equals("Able was  ere  saw Elba")=true;  res = StringUtils.deleteAny(inString, "AeEba!");  res.equals("l ws I r I sw l")=true;  String mismatch = StringUtils.deleteAny(inString, "#@$#$^");  mismatch.equals(inString)=true;  //源代码如下 return (str != null ? "'" + str + "'" : null);  assertEquals("'myString'", StringUtils.quote("myString"));  assertEquals("''", StringUtils.quote(""));  assertNull(StringUtils.quote(null));  //将第一个字符改大写  StringUtils.capitalize(Str)  //将第一个个字符改小写  StringUtils.uncapitalize(str)  //mypath/myfile.txt" -> "myfile.txt  //获取字符串文件名和扩展名  StringUtils.getFilename("myfile").equals("myfile")=true;  StringUtils.getFilename("mypath/myfile".equals("myfile")=true;  StringUtils.getFilename("mypath/myfile".equals("myfile")=true;  StringUtils.getFilename("myfile.txt").equals("myfile.txt")=true;  StringUtils.getFilename("mypath/myfile.txt").equals("myfile.txt")=true;  // 获取字符串扩展名,以.分隔  StringUtils.getFilenameExtension("myfile")=null;  StringUtils.getFilenameExtension("myPath/myfile")=null;  StringUtils.getFilenameExtension("myfile.").equals("")=true;  StringUtils.getFilenameExtension("myPath/myfile.").equals("")=true;  StringUtils.StringUtils.getFilenameExtension("myfile.txt").equals("txt")=true;  StringUtils.getFilenameExtension("mypath/myfile.txt").equals("txt")=true;  //舍去文件名扩展名  StringUtils.stripFilenameExtension(null)=true;  StringUtils.stripFilenameExtension("").equals("")=true;  StringUtils.stripFilenameExtension("myfile").equals("myfile")=true;  StringUtils.stripFilenameExtension("mypath/myfile").equals("mypath/myfile")=true;  StringUtils.stripFilenameExtension("myfile.").equals("myfile")=true;  StringUtils.stripFilenameExtension("mypath/myfile.").equals("mypath/myfile")=true;  StringUtils.stripFilenameExtension("mypath/myfile.").equals("mypath/myfile")=true;  StringUtils.stripFilenameExtension("myfile.txt").equals("myfile")=true;  StringUtils.stripFilenameExtension("mypath/myfile.txt").equals("mypath/myfile")=true

结论

StringUtils.isEmpty() 方法是判断不了空格的,所以要慎重用这个方法
StringUtils.hasText() 可以使用这个方法判断是否有内容,但是使用里面值的时候注意要trim掉左右空格

关于Spring框架中StringUtils常用/易误用方法解析相关推荐

  1. Spring框架中常用的设计模式详解

    一.浅谈控制反转(IOC)与依赖注入(DI) IOC(Inversion of Control)是Spring中一个非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它主要的额目的是借助于第三方 ...

  2. Spring框架中的核心技术之AOP

    目录 1. 什么是AOP? 2. 实现AOP技术的框架有哪些? 2.1 Spring框架中的AOP技术 2.2 Aspectj框架 2.3 小结 3. Aspectj框架中的使用AOP的方式 4. A ...

  3. Spring框架中的设计模式(一)

    设计模式有助于遵循良好的编程实践.作为最流行的Web框架之一的Spring框架也使用其中的一些. 本文将介绍Spring Framework中使用的设计模式.这是5篇专题文章的第一部分.这次我们将发现 ...

  4. 在Spring 框架中如何更有效的使用JDBC?

    使用Spring JDBC 框架,资源管理以及错误处理的代价都会减轻.开发人员只需通过statements 和queries 语句从数据库中存取数据.Spring 框架中通过使用模板类能更有效的使用J ...

  5. 在Spring框架中使用SQL存储过程

    Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...

  6. 理解Spring框架中Bean的作用域

    本篇介绍Spring Bean实例的作用范围,Spring Bean实例的作用范围由配置项scope限定.通过本篇的学习,可以达成如下目标. ● 应用scope配置项配置Bean的作用域 ● 应用单例 ...

  7. Spring框架中的控制反转和依赖注入

    控制反转: 控制反转是用来降低代码之间的耦合度的,基本思想就是借助"第三方"实现具有依赖对象的解耦. 为什么需要控制反转,因为项目中对象或多或少存在耦合.控制反转的关键在于Ioc容 ...

  8. Spring框架中提取list集合类型属性注入

    提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...

  9. Spring框架中集合属性为对象的注入方法

    Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...

最新文章

  1. 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
  2. C++ NULL nullptr和0的区别
  3. python selenium 框架说明_基于python+selenium的框架思路(二)
  4. nssl1519-背包签到题【数论】
  5. 想学好数学,请收好这份宝典!
  6. 【Python】pandas模块中更改Series的数据类型
  7. Python | threading02 - 互斥锁解决多个线程之间随机调度,造成“线程不安全”的问题。
  8. 高并发用redis还是mysql_高并发架构系列:Redis缓存和MySQL数据一致性方案详解
  9. jq双击放大图片_痘痘肌肤反馈图片,平时注意这3个就可以
  10. php 递归函数中静态变量,php递归,静态变量,匿名函数使用
  11. C++_类和对象_C++多态_多态的基本语法_静态多态_动态多态_虚函数---C++语言工作笔记069
  12. python基础30个常用代码-Python基础30道测试题(字符串相关)
  13. HTML与css语法笔记
  14. 学生信息管理系统(一)——登录窗体
  15. 淘宝七天自动确认收货,可以怎么实现?
  16. 3dsmax烘焙模型
  17. Python深度学习实现DIY专属个人表情包
  18. android wifi软开关,rfkill 无线设备软开关
  19. 伦敦旅游必玩的密室逃脱体验——《神探夏洛克:官方现场游戏》
  20. 博客园的整改了,我们还能去哪些技术社区写博客

热门文章

  1. python 电压 谐波_用python计算thd
  2. 嵌入式驱动解析:从串口驱动到Linux驱动模型
  3. Buuctf[网鼎杯 2020 青龙组]AreUSerialz
  4. openwrt二级路由wan口如何设置
  5. 国内GIS有哪些大niu?他们的研究方向分别是什么呢?
  6. 简单!三步实现微信消息同步!!
  7. 渗透测试之文件包含[汇总]
  8. NG Toolset开发笔记--5GNR Resource Grid(50)
  9. 魅族手机刷ubuntu php,国内版魅族pro5刷ubuntu教程
  10. 公司邮箱怎么登陆?域名邮箱怎么登陆?手机如何登陆企业邮箱?