[Apache.Lang3.StringUtils]substringXX()字符串截取方法总结

本文介绍了ApacheCommonsLang3.12.0中的StringUtils类,包括substring系列方法,如从指定位置截取字符串,以及按分隔符分割字符串等功能。示例代码展示了各种用法,如正向和反向截取,以及查找分隔符前后的子串等。
摘要由CSDN通过智能技术生成

StringUtils (Apache Commons Lang 3.12.0 API)

导入依赖

<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";

字符串abcde
正向遍历01234
倒向遍历-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";

字符串abcde
正向遍历01234
倒向遍历-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=nullclose=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]
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值