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官方文档中找到。