【Java实用技术】字符串的截取用什么方法好?

举报
Java实用技术@Pandas 发表于 2023/03/17 21:58:17 2023/03/17
【摘要】 我们将字符串操作分为下面6种。 今天我们来讲解第三节:字符串截取和拆分

1、必备字符串操作

我们将字符串操作分为下面6种:

  1. 基本操作方法
  2. 字符串判空、比较
  3. 字符串截取和拆分
  4. 字符串查找和替换
  5. 字符串和其他类型数据的转换
  6. 字符串拼接和格式化

今天我们来讲解第三节。

2、字符串截取和拆分

2.1 对于字符串截取的原生操作

//原生方法:
public String.substring(int beginIndex, int endIndex)

**问题:**你能记得截取的部分包含开始索引还是包含结束索引?

如果你不能第一时间回答这个问题,说明你对原生方法使用不熟悉,在开发时候,你可能会查阅jdk文档,或者写测试方法验证。

这在日常开发中会浪费一定时间。

**答案:**结果中包含beginIndex,但是不包含endIndex

**原生方法使用限制:**使用前要判空,记住开始和结束索引是否包含在结果内。

特别麻烦的是,如果你要截取指定分割符之间的部分,需要再使用indexOf()方法获得索引,作为开始索引记得要加1。

代码如下:

String ss = "java_pandas.jpg";
if (ss != null) {
    String s1 = ss.substring(ss.indexOf("_") + 1, ss.indexOf("."));
}

img

2.2 推荐字符串截取操作

Apache工具类StringUtils.substringXX()

**优势:**不用担心字符串为null(空),方法名直白。

推荐常用方法:

// 截取字符串2个字符中间的字符串
public static String substringBetween(String str, String open, String close)
// 截取指定分割符后面的部分
public static String substringAfterLast (String str, String separator)
// 截取指定分割符前面的部分
public static String substringBeforeLast (String str, String separator)

对于substringBetween方法,结果就是不包含开始和结束分割符的部分,这也很符合一般的操作思维。

对于上面提到的一个截取特定分割符之间的部分,可以一行代码搞定。

String ss = "java_pandas.jpg";
String s2 = StringUtils.substringBetween(ss, "_", ".");

开发中比较常见的需求是截取某个特定分割符之间的字符串,又或者是截取特定分割符前(后)的字符串。

这些在工具类中直接调用,比自己写方法要方便很多。

3、demo用例


import org.apache.commons.lang3.StringUtils;


/**
 * Java实用技术手册 By Pandas。
 * JDK版本:jdk1.8.0_66
 *
 * @author Pandas
 * @date 2021/10/7
 */
public class StringSub {

    /**
     * 截取字符串方法用哪个?
     */
    public static void main(String[] args) {
        String ss = "java_pandas.jpg";

        System.out.println("*** String原生substring方法 ***");
        // 对下划线和句号之间内容截取
        if (ss != null) {
            String s1 = ss.substring(ss.indexOf("_") + 1, ss.indexOf("."));
            System.out.println(s1);
        }

        System.out.println("*** StringUtils 方法 *****");
        String s2 = StringUtils.substringBetween(ss, "_", ".");
        System.out.println(s2);
        // 获取文件后缀名
        String postfix = StringUtils.substringAfterLast(ss, ".");
        String fileName = StringUtils.substringBeforeLast(ss, ".");
        System.out.println("文件名:" + fileName);
        System.out.println("文件后缀:" + postfix);

    }
}

/** 运行结果===>
*** String原生substring方法 ***
pandas
*** StringUtils 方法 *****
pandas
文件名:java_pandas
文件后缀:jpg
*/

4、总结

非必要情况下不要使用原生的substring方法,请直接使用StringUtils.substringXX()

是不是感觉前2期都比较简单?现在是热身操作,后面会有更复杂的高阶技巧等着你。

欢迎阅读本期内容,希望对新入行的你有帮助。

我是Pandas,专注Java编程实用技术分享,公众号Java实用技术手册和B站均有视频解说,欢迎来玩。

如果你觉得这篇文章有用,别忘了点赞+关注,一起进步!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。