当前位置: 首页 > news >正文

StringUtils常用方法解析

StringUtils常用方法解析

StringUtils是Apache Commons Lang库中的一个工具类,提供了许多用于处理字符串的实用方法。以下是一些StringUtils中常用的方法:

1. isEmpty / isNotEmpty

  • isEmpty(String str): 检查字符串是否为 null 或空字符串。返回 true 表示为空,否则返回 false

  • isNotEmpty(String str): 检查字符串是否不为 null 且不为空字符串。返回 true 表示不为空,否则返回 false

    参数说明:

    • str: 要检查的字符串。
StringUtils.isEmpty(null);       // true
StringUtils.isEmpty("");         // true
StringUtils.isEmpty(" ");        // false
StringUtils.isNotEmpty("Hello"); // true

2. isBlank / isNotBlank

  • isBlank(String str): 检查字符串是否为 null、空字符串或仅包含空格。返回 true 表示为空白,否则返回 false

  • isNotBlank(String str): 检查字符串是否不为 null 且不为空字符串,且不仅包含空格。返回 true 表示不为空白,否则返回 false

    参数说明:

    • str: 要检查的字符串。
StringUtils.isBlank(null);        // true
StringUtils.isBlank("");          // true
StringUtils.isBlank(" ");         // true
StringUtils.isNotBlank("Hello");  // true

3. trim / strip

  • trim(String str): 去除字符串首尾的空格。返回去除空格后的字符串。

  • strip(String str): 去除字符串首尾的空格,支持Unicode空格字符。返回去除空格后的字符串。

    参数说明:

    • str: 要去除空格的字符串。
StringUtils.trim("  Hello  "); // "Hello"
StringUtils.strip("  Hello  "); // "Hello"

4. equals / equalsIgnoreCase

  • equals(CharSequence str1, CharSequence str2): 比较两个字符串是否相等,防止 null 引起的 NullPointerException。返回 true 表示相等,否则返回 false

  • equalsIgnoreCase(String str1, String str2): 忽略大小写比较两个字符串是否相等。返回 true 表示相等,否则返回 false

    参数说明:

    • str1: 第一个要比较的字符串。
    • str2: 第二个要比较的字符串。
StringUtils.equals("hello", "hello");              // true
StringUtils.equals(null, "hello");                  // false
StringUtils.equalsIgnoreCase("Hello", "hello");    // true

5. substring

  • substring(String str, int start): 截取字符串从指定位置开始到字符串结束。返回截取的子字符串。

  • substring(String str, int start, int end): 截取字符串从指定位置开始到指定位置结束。返回截取的子字符串。

    参数说明:

    • str: 要截取的字符串。
    • start: 截取开始的位置。
    • end: 截取结束的位置。
StringUtils.substring("Hello World", 6);      // "World"
StringUtils.substring("Hello World", 0, 5);   // "Hello"

6. replace / replaceIgnoreCase

  • replace(String text, String searchString, String replacement): 替换字符串中的指定子字符串。返回替换后的字符串。

  • replaceIgnoreCase(String text, String searchString, String replacement): 忽略大小写替换字符串中的指定子字符串。返回替换后的字符串。

    参数说明:

    • text: 要替换的原始字符串。
    • searchString: 要替换的子字符串。
    • replacement: 替换的新字符串。
StringUtils.replace("Hello, world!", "world", "Java");            // "Hello, Java!"
StringUtils.replaceIgnoreCase("Hello, World!", "world", "Java");  // "Hello, Java!"

7. join

join(Iterable<?> iterable, String separator): 将集合中的元素连接成一个字符串,使用指定的分隔符。返回连接后的字符串。

参数说明:

  • iterable: 要连接的元素集合。
  • separator: 分隔符。
List<String> list = Arrays.asList("apple", "banana", "orange");
StringUtils.join(list, ", "); // "apple, banana, orange"

8. startsWith / endsWith

  • startsWith(CharSequence str, CharSequence prefix): 检查字符串是否以指定的前缀开头。返回 true 表示是以前缀开头,否则返回 false

  • endsWith(CharSequence str, CharSequence suffix): 检查字符串是否以指定的后缀结尾。返回 true 表示是以后缀结尾,否则返回 false

    参数说明:

    • str: 要检查的字符串。
    • prefix: 要检查的前缀。
    • suffix: 要检查的后缀。
StringUtils.startsWith("Hello World", "Hello"); // true
StringUtils.endsWith("Hello World", "World");   // true

9. contains

contains(CharSequence seq, CharSequence searchSeq): 检查字符串是否包含指定的子字符串。返回 true 表示包含,否则返回 false

参数说明:

  • seq: 要检查的字符串。
  • searchSeq: 要查找的子字符串。
StringUtils.contains("Hello World", "lo"); // true

10. indexOf / lastIndexOf

  • indexOf(CharSequence seq, CharSequence searchSeq): 返回指定子字符串在字符串中第一次出现的位置,如果未找到则返回-1。

  • lastIndexOf(CharSequence seq, CharSequence searchSeq): 返回指定子字符串在字符串中最后一次出现的位置,如果未找到则返回-1。

    参数说明:

    • seq: 要查找的字符串。
    • searchSeq: 要查找的子字符串。
StringUtils.indexOf("Hello World", "l");      // 2
StringUtils.lastIndexOf("Hello World", "l");  // 9

11. substringBefore / substringAfter

  • substringBefore(String str, String separator): 返回指定分隔符之前的子字符串。如果找不到分隔符,则返回原始字符串。

  • substringAfter(String str, String separator): 返回指定分隔符之后的子字符串。如果找不到分隔符,则返回空字符串。

    参数说明:

    • str: 要处理的字符串。
    • separator: 分隔符。
StringUtils.substringBefore("apple,orange,banana", ","); // "apple"
StringUtils.substringAfter("apple,orange,banana", ",");  // "orange,banana"

12. left / right

  • left(String str, int len): 返回字符串左侧的指定长度的子字符串。如果长度大于字符串长度,则返回整个字符串。

  • right(String str, int len): 返回字符串右侧的指定长度的子字符串。如果长度大于字符串长度,则返回整个字符串。

    参数说明:

    • str: 要处理的字符串。
    • len: 截取的长度。
StringUtils.left("Hello World", 5);   // "Hello"
StringUtils.right("Hello World", 5);  // "World"

13. capitalize / uncapitalize

  • capitalize(String str): 将字符串的第一个字符转换为大写。返回转换后的字符串。

  • uncapitalize(String str): 将字符串的第一个字符转换为小写。返回转换后的字符串。

    参数说明:

    • str: 要处理的字符串。
StringUtils.capitalize("hello");     // "Hello"
StringUtils.uncapitalize("Hello");   // "hello"

14. substringBetween

substringBetween(String str, String open, String close): 返回在指定开放和关闭字符串之间的子字符串。如果找不到匹配的开放和关闭字符串,则返回 null

参数说明:

  • str: 要查找的字符串。
  • open: 开放字符串。
  • close: 关闭字符串。
StringUtils.substringBetween("The [quick] brown fox", "[", "]");  // "quick"

15. defaultIfBlank / defaultIfEmpty

  • defaultIfBlank(String str, String defaultValue): 如果字符串为空、空字符串或只包含空格,则返回默认值。否则返回原始字符串。

  • defaultIfEmpty(String str, String defaultValue): 如果字符串为空或空字符串,则返回默认值。否则返回原始字符串。

    参数说明:

    • str: 要处理的字符串。
    • defaultValue: 默认值。
StringUtils.defaultIfBlank(null, "default");         // "default"
StringUtils.defaultIfBlank("  ", "default");         // "default"
StringUtils.defaultIfEmpty(null, "default");          // "default"
StringUtils.defaultIfEmpty("", "default");            // "default"

16. reverse

reverse(String str): 反转字符串。返回反转后的字符串。

参数说明:

  • str: 要反转的字符串。
StringUtils.reverse("Hello"); // "olleH"

17. swapCase

swapCase(String str): 将字符串中的大写字母转换为小写字母,小写字母转换为大写字母。返回转换后的字符串。

参数说明:

  • str: 要处理的字符串。
StringUtils.swapCase("Hello World"); // "hELLO wORLD"

18. abbreviate

abbreviate(String str, int maxWidth): 缩短字符串,如果超过指定宽度则截断并添加省略号。返回缩短后的字符串。

参数说明:

  • str: 要缩短的字符串。
  • maxWidth: 最大宽度。
StringUtils.abbreviate("Hello World", 7); // "He..."

19. difference

difference(String str1, String str2): 返回两个字符串的不同部分。返回不同的部分字符串。

参数说明:

  • str1: 第一个字符串。
  • str2: 第二个字符串。
StringUtils.difference("abcde", "abxyz"); // "xyz"

20. wrap

wrap(String str, String wrapWith): 在字符串前后包装指定的字符串。返回包装后的字符串。

参数说明:

  • str: 要包装的字符串。
  • wrapWith: 包装字符串。
StringUtils.wrap("Hello", "--"); // "--Hello--"

21. chomp

chomp(String str): 移除字符串末尾的换行符(\n)。返回移除换行符后的字符串。

参数说明:

  • str: 要处理的字符串。
StringUtils.chomp("Hello\n"); // "Hello"

22. countMatches

countMatches(String str, String sub): 计算字符串中子字符串出现的次数。返回出现的次数。

参数说明:

  • str: 要搜索的字符串。
  • sub: 要计数的子字符串。
StringUtils.countMatches("abcaabc", "ab"); // 2

23. isAlpha / isAlphanumeric / isNumeric

  • isAlpha(String str): 检查字符串是否只包含字母。返回 true 表示是,否则返回 false

  • isAlphanumeric(String str): 检查字符串是否只包含字母和数字。返回 true 表示是,否则返回 false

  • isNumeric(String str): 检查字符串是否只包含数字。返回 true 表示是,否则返回 false

    参数说明:

    • str: 要检查的字符串。
StringUtils.isAlpha("abc");           // true
StringUtils.isAlphanumeric("abc123"); // true
StringUtils.isNumeric("123");         // true

24. leftPad / rightPad

  • leftPad(String str, int size, char padChar): 在字符串左侧填充指定字符,使其达到指定长度。返回填充后的字符串。

  • rightPad(String str, int size, char padChar): 在字符串右侧填充指定字符,使其达到指定长度。返回填充后的字符串。

    参数说明:

    • str: 要填充的字符串。
    • size: 最终字符串的长度。
    • padChar: 用于填充的字符。
StringUtils.leftPad("123", 5, '0');   // "00123"
StringUtils.rightPad("123", 5, '0');  // "12300"

25. substringAfterLast / substringBeforeLast

  • substringAfterLast(String str, String separator): 返回字符串中最后一个分隔符之后的子字符串。如果找不到分隔符,则返回空字符串。

  • substringBeforeLast(String str, String separator): 返回字符串中最后一个分隔符之前的子字符串。如果找不到分隔符,则返回原始字符串。

    参数说明:

    • str: 要处理的字符串。
    • separator: 分隔符。
StringUtils.substringAfterLast("apple,orange,banana", ",");  // "banana"
StringUtils.substringBeforeLast("apple,orange,banana", ","); // "apple,orange"

26. hasText

  • public static boolean hasText(String str): 返回字符串中最后一个分隔符之后的子字符串。如果找不到分隔符,则返回空字符串。如果给定的字符串不为 null 且包含至少一个非空格字符,则返回true;如果给定的字符串为 null 或不包含任何非空格字符,则返回false;

    参数说明:

    • str: 要处理的字符串。
String text1 = "Hello, World!";
String text2 = "   "; // contains only spaces
String text3 = null;boolean hasText1 = StringUtils.hasText(text1); // true
boolean hasText2 = StringUtils.hasText(text2); // false
boolean hasText3 = StringUtils.hasText(text3); // false

27. capitalizeFully

capitalizeFully(String str): 将字符串每个单词的第一个字符大写,其余字符小写。返回转换后的字符串。

参数说明:

  • str: 要处理的字符串。
StringUtils.capitalizeFully("apple orange banana"); // "Apple Orange Banana"

28. remove / removeEnd / removeStart

  • remove(String str, String remove): 移除字符串中的指定子字符串。返回移除后的字符串。

  • removeEnd(String str, String remove): 移除字符串末尾的指定子字符串。返回移除后的字符串。

  • removeStart(String str, String remove): 移除字符串开头的指定子字符串。返回移除后的字符串。

    参数说明:

    • str: 要处理的字符串。
    • remove: 要移除的子字符串。
StringUtils.remove("Hello World", "l");      // "Heo Word"
StringUtils.removeEnd("Hello World", "d");   // "Hello Worl"
StringUtils.removeStart("Hello World", "H"); // "ello World"

29. stripAccents

stripAccents(String input): 移除字符串中的重音符号。返回移除重音符号后的字符串。

参数说明:

  • input: 要处理的字符串。
StringUtils.stripAccents("éàü"); // "eau"

30. replaceEach

replaceEach(String text, String[] searchList, String[] replacementList): 使用给定的字符串数组进行多重替换。返回替换后的字符串。

参数说明:

  • text: 要进行替换的原始字符串。
  • searchList: 要查找和替换的字符串数组。
  • replacementList: 替换成的字符串数组。
String[] searchList = new String[]{"apple", "orange", "banana"};
String[] replacementList = new String[]{"fruit1", "fruit2", "fruit3"};
StringUtils.replaceEach("apple orange banana", searchList, replacementList); // "fruit1 fruit2 fruit3"

这些方法覆盖了各种字符串处理的场景,从简单的判断字符串是否为空到更复杂的文本操作。在使用时,请根据你的具体需求选择适当的方法。完整的方法列表和详细的文档可以在Apache Commons Lang官方文档中找到。

相关文章:

  • 安装 yarn、pnpm、功能比较
  • 68内网安全-域横向PTHPTKPTT哈希票据传递
  • 【ESP-NOW 入门(ESP32 with Arduino IDE)】
  • vue连接本地服务器
  • YOLOv8改进 | 细节创新篇 | iAFF迭代注意力特征融合助力多目标细节涨点
  • 关于IDEA中Git版本回滚整理
  • 爬虫工作量由小到大的思维转变---<第三十四章 Scrapy 的部署scrapyd+Gerapy>
  • Docker 数据持久化的三种方式
  • JS的this机制
  • 【面试题】写一个睡眠函数
  • leetcode-2.两数相加
  • 【数据倾斜笔记】
  • Pandas中concat的用法
  • JavaScript:正则表达式
  • 【线性代数】决定张成空间的最少向量线性无关吗?
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Android 控件背景颜色处理
  • Android系统模拟器绘制实现概述
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Javascript Math对象和Date对象常用方法详解
  • Map集合、散列表、红黑树介绍
  • Material Design
  • python学习笔记 - ThreadLocal
  • REST架构的思考
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 前端工程化(Gulp、Webpack)-webpack
  • 区块链共识机制优缺点对比都是什么
  • 如何编写一个可升级的智能合约
  • 思维导图—你不知道的JavaScript中卷
  • 应用生命周期终极 DevOps 工具包
  • 怎么把视频里的音乐提取出来
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • (1)SpringCloud 整合Python
  • (145)光线追踪距离场柔和阴影
  • (poj1.3.2)1791(构造法模拟)
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)3D模板阴影原理
  • (转)菜鸟学数据库(三)——存储过程
  • (转)大型网站架构演变和知识体系
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core使用ef 6
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 程序发生了一个不可捕获的异常
  • .NET框架
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .Net中的设计模式——Factory Method模式
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理