关于Spring框架中StringUtils常用/易误用方法解析
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常用/易误用方法解析相关推荐
- Spring框架中常用的设计模式详解
一.浅谈控制反转(IOC)与依赖注入(DI) IOC(Inversion of Control)是Spring中一个非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它主要的额目的是借助于第三方 ...
- Spring框架中的核心技术之AOP
目录 1. 什么是AOP? 2. 实现AOP技术的框架有哪些? 2.1 Spring框架中的AOP技术 2.2 Aspectj框架 2.3 小结 3. Aspectj框架中的使用AOP的方式 4. A ...
- Spring框架中的设计模式(一)
设计模式有助于遵循良好的编程实践.作为最流行的Web框架之一的Spring框架也使用其中的一些. 本文将介绍Spring Framework中使用的设计模式.这是5篇专题文章的第一部分.这次我们将发现 ...
- 在Spring 框架中如何更有效的使用JDBC?
使用Spring JDBC 框架,资源管理以及错误处理的代价都会减轻.开发人员只需通过statements 和queries 语句从数据库中存取数据.Spring 框架中通过使用模板类能更有效的使用J ...
- 在Spring框架中使用SQL存储过程
Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...
- 理解Spring框架中Bean的作用域
本篇介绍Spring Bean实例的作用范围,Spring Bean实例的作用范围由配置项scope限定.通过本篇的学习,可以达成如下目标. ● 应用scope配置项配置Bean的作用域 ● 应用单例 ...
- Spring框架中的控制反转和依赖注入
控制反转: 控制反转是用来降低代码之间的耦合度的,基本思想就是借助"第三方"实现具有依赖对象的解耦. 为什么需要控制反转,因为项目中对象或多或少存在耦合.控制反转的关键在于Ioc容 ...
- Spring框架中提取list集合类型属性注入
提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...
- Spring框架中集合属性为对象的注入方法
Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...
最新文章
- 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
- C++ NULL nullptr和0的区别
- python selenium 框架说明_基于python+selenium的框架思路(二)
- nssl1519-背包签到题【数论】
- 想学好数学,请收好这份宝典!
- 【Python】pandas模块中更改Series的数据类型
- Python | threading02 - 互斥锁解决多个线程之间随机调度,造成“线程不安全”的问题。
- 高并发用redis还是mysql_高并发架构系列:Redis缓存和MySQL数据一致性方案详解
- jq双击放大图片_痘痘肌肤反馈图片,平时注意这3个就可以
- php 递归函数中静态变量,php递归,静态变量,匿名函数使用
- C++_类和对象_C++多态_多态的基本语法_静态多态_动态多态_虚函数---C++语言工作笔记069
- python基础30个常用代码-Python基础30道测试题(字符串相关)
- HTML与css语法笔记
- 学生信息管理系统(一)——登录窗体
- 淘宝七天自动确认收货,可以怎么实现?
- 3dsmax烘焙模型
- Python深度学习实现DIY专属个人表情包
- android wifi软开关,rfkill 无线设备软开关
- 伦敦旅游必玩的密室逃脱体验——《神探夏洛克:官方现场游戏》
- 博客园的整改了,我们还能去哪些技术社区写博客
热门文章
- python 电压 谐波_用python计算thd
- 嵌入式驱动解析:从串口驱动到Linux驱动模型
- Buuctf[网鼎杯 2020 青龙组]AreUSerialz
- openwrt二级路由wan口如何设置
- 国内GIS有哪些大niu?他们的研究方向分别是什么呢?
- 简单!三步实现微信消息同步!!
- 渗透测试之文件包含[汇总]
- NG Toolset开发笔记--5GNR Resource Grid(50)
- 魅族手机刷ubuntu php,国内版魅族pro5刷ubuntu教程
- 公司邮箱怎么登陆?域名邮箱怎么登陆?手机如何登陆企业邮箱?