Java StringUtils工具类常用方法详解

StringUtils是Apache Commons Lang库中一个极其常用的工具类,它提供了大量处理字符串的静态方法,能够简化我们的日常开发工作,提高代码的可读性和健壮性。下面我将详细介绍StringUtils类中最常用的方法及其使用场景。

一、StringUtils的基本介绍

Apache Commons Lang库中的StringUtils类提供了比JDK原生String类更丰富的字符串操作方法,所有方法都是null安全的,这意味着它们可以优雅地处理null值而不会抛出NullPointerException。

引入依赖创建springboot工程会自动引入该依赖

<XML>

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
</dependency>

二、空校验与空白校验

1. isEmpty() - 空字符串校验

<JAVA>

StringUtils.isEmpty(null)      // true
StringUtils.isEmpty("")        // true
StringUtils.isEmpty(" ")       // false
StringUtils.isEmpty("test")    // false

2. isNotEmpty() - 非空校验

<JAVA>

StringUtils.isNotEmpty(null)   // false
StringUtils.isNotEmpty("")     // false
StringUtils.isNotEmpty(" ")    // true
StringUtils.isNotEmpty("test") // true

3. isBlank() - 空白字符串校验

<JAVA>

StringUtils.isBlank(null)      // true
StringUtils.isBlank("")        // true
StringUtils.isBlank(" ")       // true
StringUtils.isBlank("\t\n")    // true
StringUtils.isBlank("test")    // false

4. isNotBlank() - 非空白字符串校验

<JAVA>

StringUtils.isNotBlank(null)   // false
StringUtils.isNotBlank("")     // false
StringUtils.isNotBlank(" ")    // false
StringUtils.isNotBlank("test") // true

三、字符串截取与分割

5. substring() - 安全截取字符串

<JAVA>

StringUtils.substring(null, 2)   // null
StringUtils.substring("", 2)     // ""
StringUtils.substring("abc", 0)  // "abc"
StringUtils.substring("abc", 2)  // "c"
StringUtils.substring("abc", 4)  // ""

6. split() - 字符串分割

<JAVA>

String[] result = StringUtils.split("a..b.c", '.');
// result = ["a", "b", "c"]

7. join() - 字符串连接

<JAVA>

StringUtils.join(new String[] {"a", "b", "c"}, ",")  // "a,b,c"

四、字符串比较

8. equals() - 安全字符串比较

<JAVA>

StringUtils.equals(null, null)   // true
StringUtils.equals(null, "abc")  // false
StringUtils.equals("abc", null)  // false
StringUtils.equals("abc", "abc") // true
StringUtils.equals("abc", "ABC") // false

9. equalsIgnoreCase() - 忽略大小写比较

<JAVA>

StringUtils.equalsIgnoreCase("abc", "ABC") // true

10. compare() - 安全字符串比较(可处理null)

<JAVA>

StringUtils.compare(null, null)   // 0
StringUtils.compare(null , "a")   // -1
StringUtils.compare("a", null)    // 1
StringUtils.compare("a", "a")     // 0
StringUtils.compare("a", "b")     // -1

五、字符串填充与去除

11. trim() - 去除两端空白

<JAVA>

StringUtils.trim(null)          // null
StringUtils.trim("")            // ""
StringUtils.trim("     ")       // ""
StringUtils.trim("abc  ")       // "abc"
StringUtils.trim("    abc    ") // "abc"

12. strip() - 扩展去除空白

<JAVA>

StringUtils.strip("  ab c  ", null)  // "ab c"
StringUtils.strip("  ab c  ", " ")   // "ab c"
StringUtils.strip("abcab", "ab")     // "c"

13. leftPad() / rightPad() - 字符串填充

<JAVA>

StringUtils.leftPad("abc", 5, ' ')  // "  abc"
StringUtils.rightPad("abc", 5, ' ') // "abc  "

六、字符串查找与替换

14. contains() - 包含检查

<JAVA>

StringUtils.contains(null, *)     // false
StringUtils.contains(*, null)     // false
StringUtils.contains("abc", 'a')  // true
StringUtils.contains("abc", "z")  // false

15. countMatches() - 统计出现次数

<JAVA>

StringUtils.countMatches("abba", "a")    // 2
StringUtils.countMatches("abba", "b")    // 2
StringUtils.countMatches("abba", 'a')    // 2

16. replace() - 字符串替换

<JAVA>

StringUtils.replace("aba", "a", "z")   // "zbz"
StringUtils.replace("abc", "d", "z")   // "abc"

七、字符串转换

17. capitalize() / uncapitalize() - 首字母大小写转换

<JAVA>

StringUtils.capitalize("cat")      // "Cat"
StringUtils.uncapitalize("Cat")    // "cat"

18. swapCase() - 大小写互换

<JAVA>

StringUtils.swapCase("The Dog has a BONE") // "tHE dOG HAS A bone"

19. reverse() - 字符串反转

<JAVA>

StringUtils.reverse("bat")  // "tab"

八、其他实用方法

20. defaultString() - null值默认字符串

<JAVA>

StringUtils.defaultString(null)  // ""
StringUtils.defaultString("")    // ""
StringUtils.defaultString("bat") // "bat"
StringUtils.defaultString(null, "default")  // "default"

21. abbreviate() - 字符串缩写

<JAVA>

StringUtils.abbreviate("abcdefg", 6)  // "abc..."
StringUtils.abbreviate("abcdefg", "...", 4)  // "a..."

22. difference() - 查找不同部分

<JAVA>

StringUtils.difference("abcde", "abxyz")  // "xyz"

总结

StringUtils提供的方法远比原生String类丰富且安全,可以显著提高开发效率和代码质量。这里介绍的只是最常用的部分方法,实际使用中还有更多实用功能如normalizeSpace()isNumeric()wrap()等方法,都值得在项目中尝试使用。

正确处理字符串是每个Java开发者必备的技能,掌握StringUtils能让这项工作变得更加轻松和高效。希望这篇博客能帮助你更好地理解并使用这个强大的工具类!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42287.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(创建型)- 原型模式

目录 定义 类图 角色 优缺点 优点 缺点 应用场景 案例展示 浅克隆 深克隆 定义 原型模式旨在创建重复的对象&#xff0c;同时确保良好的性能表现。它通过复制现有对象&#xff08;原型&#xff09;来创建新对象&#xff0c;而非使用传统的构造函数创建方式。这种设计…

MQ的数据一致性,如何保证?

1 数据一致性问题的原因 这些年在Kafka、RabbitMQ、RocketMQ踩过的坑&#xff0c;总结成四类致命原因&#xff1a; 生产者悲剧&#xff1a;消息成功进Broker&#xff0c;却没写入磁盘就断电。消费者悲剧&#xff1a;消息消费成功&#xff0c;但业务执行失败。轮盘赌局&#x…

Angular由一个bug说起之十五:自定义基于Overlay的Tooltip

背景 工具提示&#xff08;tooltip&#xff09;是一个常见的 UI 组件&#xff0c;用于在用户与页面元素交互时提供额外的信息。由于angular/material/tooltip的matTooltip只能显示纯文本&#xff0c;所以我们可以通过自定义Directive来实现一个灵活且功能丰富的tooltip Overlay…

简单介绍一下Unity中的ScriptableObject

ScriptableObject的本质 ScriptableObject是Unity引擎中的一个特殊基类&#xff0c;允许你创建不依附于游戏对象的数据容器&#xff0c;以资产(Asset)形式存储在项目中。这些资产&#xff1a; 可在编辑器中创建和配置 在构建后作为资产打包 可通过Resources或AssetBundle加…

ubuntu24.04.2 NVIDIA GeForce RTX 4060笔记本安装驱动

https://www.nvidia.cn/drivers/details/242281/ 上面是下载地址 sudo chmod x NVIDIA-Linux-x86_64-570.133.07.run # 赋予执行权限把下载的驱动复制到家目录下&#xff0c;基本工具准备&#xff0c;如下 sudo apt update sudo apt install build-essential libglvnd-dev …

LabVIEW 布尔控件回车键触发程序退出

在 LabVIEW 开发过程中&#xff0c;部分用户可能会遇到按下回车键&#xff08;Enter&#xff09;后&#xff0c;程序意外退出的问题。该问题主要源于布尔控件的属性设置冲突&#xff0c;包括键分配、数据绑定及 Tab 键行为等。本文将详细分析问题根源&#xff0c;并提供一套完整…

分布式系统面试总结:3、分布式锁(和本地锁的区别、特点、常见实现方案)

仅供自学回顾使用&#xff0c;请支持javaGuide原版书籍。 本篇文章涉及到的分布式锁&#xff0c;在本人其他文章中也有涉及。 《JUC&#xff1a;三、两阶段终止模式、死锁的jconsole检测、乐观锁&#xff08;版本号机制CAS实现&#xff09;悲观锁》&#xff1a;https://blog.…

WebWorkers在项目中的使用案例

Worker | 文档 worker 线程的关闭在主线程和 worker 线程都能进行操作&#xff0c;但对 worker 线程的影响略有不同。 // main.js&#xff08;主线程&#xff09; const myWorker new Worker(/worker.js); // 创建worker myWorker.terminate(); // 关闭worker 复制代码 // wor…

vue ts+Windi CSS

1、创建vue项目 trae&#xff08;字节&#xff09;打开一个空文件夹 npm install -g vue/cli vue create my-project cd my-project vue add typescript npm run serve vue项目创建完成 2、安装windicss vue add windicss vue.config.js配置 npm install vue-router …

【HTML 基础教程】HTML 编辑器

HTML 编辑器推荐 可以使用专业的 HTML 编辑器来编辑 HTML&#xff0c;菜鸟教程为大家推荐几款常用的编辑器&#xff1a; VS Code&#xff1a;Visual Studio Code - Code Editing. RedefinedSublime Text&#xff1a;http://www.sublimetext.com/在线编辑器&#xff1a;HTML/C…

文件上传的小点总结(2)

4.黑名单绕过(.htaccess方法) 源码一打开&#xff0c;遇到这样的黑名单是不是看的头皮发麻&#xff0c;这么多后缀都禁用。 .htaccess可以启用或禁用apache的功能&#xff0c;利用这个特点&#xff0c;我们可以使用该文件来禁用上述黑名单功能&#xff0c;从而上传**文件。 简…

mysql--主从复制--部署

MySQL 主从复制部署教程 一、主节点&#xff08;Master&#xff09;配置 1. 创建目录结构 mkdir -p /usr/local/src/mysql_demo/master_replica/{logs,configFile,data}2. 编写主节点的 MySQL 配置文件 my.cnf 路径&#xff1a;/usr/local/src/mysql_demo/master_replica/co…

Qt弹出新窗口并关闭(一个按钮)

参考&#xff1a;Qt基础 练习&#xff1a;弹出新窗口并关闭的两种实现方式&#xff08;两个按钮、一个按钮&#xff09;_qt打开一个窗口另一个关闭-CSDN博客 实现&#xff1a; 一个按钮&#xff0c;点击一次&#xff0c;按钮的名字从open window变为close window&#xff0c;…

游戏引擎学习第185天

回顾并计划今天的内容 我们完成了开始整理这些数据的工作&#xff0c;但我们还没有机会真正去查看这些数据的具体内容&#xff0c;因为我们只是刚刚开始了数据整理的基本工作。我们收集了大量的信息&#xff0c;但到目前为止&#xff0c;仍然没有足够的可视化工具来帮助我们理…

《一本书讲透Elasticsearch:原理、进阶与工程实践》读书笔记

1&#xff1a;es的组成部分&#xff1a; Elasticsearch 引擎&#xff1a;核心组件&#xff0c;处理索引和搜索请求 Kibana&#xff1a;es的可视化的数据界面&#xff0c;用于分析和展示数据 Beats&#xff08;可选&#xff09;轻量级的日志采集器 2&#xff1a;基本概念 es开…

[React 进阶系列] 组合组件 复合组件

[React 进阶系列] 组合组件 & 复合组件 今天写个人项目练手的时候搜到了一个比价有趣的实现&#xff0c;于是用了一下&#xff0c;发现这个 concept 不是特别的熟&#xff0c;于是上网找了下&#xff0c;返现了一个叫 复合组件(compound components) 的概念。搜索了一下后…

HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+

核心API ohos.data.relationalStore API 9 数据库 数据库是存储和管理数据的系统 数据库&#xff08;Database&#xff09;是一个以特定方式组织、存储和管理数据的集合&#xff0c;通常用于支持各种应用程序和系统的运行。它不仅是存放数据的仓库&#xff0c;还通过一定的…

用HTML和CSS生成炫光动画卡片

这个效果结合了渐变、旋转和悬浮效果的炫酷动画示例&#xff0c;使用HTML和CSS实现。 一、效果 二、实现 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&quo…

蓝桥杯第10届 后缀表达式

题目描述 给定 N 个加号、M 个减号以及 NM1 个整数 A1,A2,⋅⋅⋅,ANM1​&#xff0c;小明想知道在所有由这N 个加号、M 个减号以及 NM1 个整数凑出的合法的 后缀表达式中&#xff0c;结果最大的是哪一个&#xff1f; 请你输出这个最大的结果。 例如使用 1 2 3 -&#xff0c…

常见框架漏洞攻略-ThinkPHP篇

漏洞名称&#xff1a;Thinkphp5x远程命令执行及getshell 第一步&#xff1a;开启靶场 第二步&#xff1a;准备工具 第三步&#xff1a;启动工具&#xff0c;进行漏洞检测 #存在漏洞 1.目标存在tp5_invoke_func_code_exec_1漏洞2.目标存在tp5_dbinfo_leak漏洞payload:http://47…