文章目录
- 导入依赖
- 方法介绍
- substring(String str, int start)
- substring(String str, int start, int end)
- substringAfter(String str, String separator)
- substringAfterLast(String str, String separator)
- substringBefore(String str, String separator)
- substringBeforeLast(String str, String separator)
- substringBetween(String str, String tag)
- substringBetween(String str, String open, String close)
- substringsBetween(String str, String open, String close)
导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
import org.apache.commons.lang3.StringUtils;
方法介绍
substring(String str, int start)
从指定的字符串str
获取子字符串
子字符串的起始位置start
:
- 如果为正,则从字符串开始获取n个字符
- 如果为负,则从字符串末尾获取n个字符
假设String str = "abcde";
字符串 | a | b | c | d | e |
---|---|---|---|---|---|
正向遍历 | 0 | 1 | 2 | 3 | 4 |
倒向遍历 | -5 | -4 | -3 | -2 | -1 |
public class SubstringTest {
public static void main(String[] args) {
String str = "abcde";
System.out.println(StringUtils.substring(str, 0)); //"abcde"
System.out.println(StringUtils.substring(str, 2)); //"cde"
System.out.println(StringUtils.substring(str, -2)); //"de"
}
}
substring(String str, int start, int end)
从指定的字符串str
获取子字符串
子字符串的起始位置start
, 结束位置end
- 如果为正,则从字符串开始获取字符
- 如果为负,则从字符串末尾获取字符
- 如果两者超出字符串大小或
start>end
,则返回""
假设String str = "abcde";
字符串 | a | b | c | d | e |
---|---|---|---|---|---|
正向遍历 | 0 | 1 | 2 | 3 | 4 |
倒向遍历 | -5 | -4 | -3 | -2 | -1 |
public static void main(String[] args) {
String str = "abcde";
System.out.println(StringUtils.substring(str, 1, 3)); //"bc"
System.out.println(StringUtils.substring(str, 6, 7)); //""
System.out.println(StringUtils.substring(str, -5, -3)); //"ab"
}
substringAfter(String str, String separator)
获取第一次出现分隔符separator
之后的子字符串,分隔符不会返回。
空字符串null
输入将返回空值null
。
输入以下情况将返回空字符串""
:
- 空字符串
str=""
- 分隔符空值
separator=null
- 未找到任何内容
public static void main(String[] args) {
System.out.println(StringUtils.substringAfter("abccde", "c")); //"cde"
System.out.println(StringUtils.substringAfter(null, "")); //null
System.out.println(StringUtils.substringAfter("", "a")); //""
System.out.println(StringUtils.substringAfter("abc", null)); //""
System.out.println(StringUtils.substringAfter("abcde", "f")); //""
}
substringAfterLast(String str, String separator)
获取从后往前第一次出现分隔符separator
之后的子字符串,分隔符不会返回。
空字符串null
输入将返回空值null
。
输入以下情况将返回空字符串""
:
- 空字符串
str=""
- 分隔符空值
separator=null
- 未找到任何内容
public static void main(String[] args) {
System.out.println(StringUtils.substringAfterLast("abccde", "c")); //"de"
System.out.println(StringUtils.substringAfterLast(null, "")); //null
System.out.println(StringUtils.substringAfterLast("", "a")); //""
System.out.println(StringUtils.substringAfterLast("abc", null)); //""
System.out.println(StringUtils.substringAfterLast("abcde", "f")); //""
}
substringBefore(String str, String separator)
获取第一次出现分隔符separator
之前的子字符串。分隔符不会返回。
空字符串null
输入将返回空值null
。
空字符串""
输入将返回空字符串""
。
如果未找到任何内容,则返回字符串str
。
public static void main(String[] args) {
System.out.println(StringUtils.substringBefore("abccde", "c")); //"ab"
System.out.println(StringUtils.substringBefore(null, "")); //null
System.out.println(StringUtils.substringBefore("", "a")); //""
System.out.println(StringUtils.substringBefore("abc", null)); //"abc"
System.out.println(StringUtils.substringBefore("abcde", "f")); //"abcde"
}
substringBeforeLast(String str, String separator)
获取从后往前第一次出现分隔符separator
之前的子字符串。分隔符不会返回。
空字符串null
输入将返回空值null
。
空字符串""
输入将返回空字符串""
。
空分隔符separator=""
或空值分隔符separator=null
或未找到任何内容,则返回字符串str
。
public static void main(String[] args) {
System.out.println(StringUtils.substringBeforeLast("abccde", "c")); //"ab"
System.out.println(StringUtils.substringBeforeLast(null, "")); //null
System.out.println(StringUtils.substringBeforeLast("abc", "")); //"abc"
System.out.println(StringUtils.substringBeforeLast("abc", null)); //"abc"
System.out.println(StringUtils.substringBeforeLast("abcde", "f")); //"abcde"
}
substringBetween(String str, String tag)
获取嵌套在同一字符串str
的两个实例tag
之间的字符串。
空输入字符串str=""
返回空字符串null
,空标记tag=null
返回空值null
。
注意:对字符串从前向后检索,遇到符合条件的子串即返回(样例4)
public static void main(String[] args) {
System.out.println(StringUtils.substringBetween("abcdea", "a")); //"bcde"
System.out.println(StringUtils.substringBetween("abc", "")); //""
System.out.println(StringUtils.substringBetween("", "abc")); //null
System.out.println(StringUtils.substringBetween("fffabcdefff", "ff")); //"fabcde"
}
substringBetween(String str, String open, String close)
获取嵌套在两个字符串之间的字符串。只返回第一个匹配项。
open=null
或close=null
返回空值null
。
open=""
或close=""
返回空字符串""
。
public static void main(String[] args) {
System.out.println(StringUtils.substringBetween("abcdea", "a", "d")); //"bc"
System.out.println(StringUtils.substringBetween("", "" ,"")); //""
System.out.println(StringUtils.substringBetween("ffabcdeffhijkff", "ff", "ff")); //"abcde"
}
substringsBetween(String str, String open, String close)
在字符串中搜索由开始标记open
和结束标记close
分隔的子字符串,返回数组中所有匹配的子字符串。
public static void main(String[] args) {
String[] strings = StringUtils.substringsBetween("ffabcdeffffhijkff", "ff", "ff");
System.out.println(Arrays.toString(strings)); //[abcde, hijk]
}