Java如何实现截取字符串

news2025/1/13 15:49:30

文章目录

  • 0 写在前面
  • 1 .substring()
  • 2 split()+正则表达式
  • 3 StringUtils.substring()
  • 4 写在最后

0 写在前面

在实际工作中有一些地方需要用到截取字符串的方法,所以在此记录下截取字符串的几种方法。
.substring()
StringUtils.substring()
split()+正则表达式

1 .substring()

这个是比较常用的一个方法。
此方法有两种形式:

substring(int beginIndex); //提取从索引位置开始至结尾处的字符串部分
substring(int beginIndex,int endIndex); //提取beginIndex开始到endIndex的字符串部分

实例代码:

        String str = "你好,Java练习生";
        //substring(int beginIndex);
        String substring1 = str.substring(3);

        //substring(int beginIndex,int endIndex);
        String substring2 = str.substring(3, 7);

        System.out.println(substring1);//Java练习生
        System.out.println(substring2);//Java

需要注意的是:计数从0开始,如果超过了字符串长度则会报错:

java.lang.StringIndexOutOfBoundsException: String index out of range: 

计算位置示意图
在这里插入图片描述

2 split()+正则表达式

不常用,不过在某些特定场合特别好用。
格式:字符串.split("指定分隔符");–返回的是一个数组
举例(以英文逗号为分隔符):

        String str = "good,good,study,day,day,up";
        String[] split = str.split(",");

        for (String s:
             split) {
            System.out.println(s);
        }

在这里插入图片描述

3 StringUtils.substring()

需要在导入StringUtils的工具类。结合了很多方法。
因为每个人用的工具类不同所以只记录一种。
maven导入:

        <dependency>
            <groupId>com.lispcast</groupId>
            <artifactId>org.apache.commons.lang</artifactId>
            <version>2.5.0</version>
        </dependency>
  • String substring(String str,int start):避免异常地从指定的String获取一个子字符串。
  • String substring(String str,int start, int end):可避免异常地从指定的String获取一个子字符串。
  • String substringAfter(String str,String separator):在第一次出现分隔符后获取子字符串。
  • String substringAfterLast(String str,String separator):在最后一次出现分隔符之后获取子字符串。
  • String substringBefore(String str,String separator):在第一次出现分隔符之前获取子字符串。
  • String substringBeforeLast(String str,String separator):在最后一次出现分隔符之前获取子字符串。
  • String substringBetween(String str,String tag):获取嵌套在同一String的两个实例之间的String。
  • String substringBetween(String str, String open, String close):获取嵌套在两个字符串之间的字符串。

测试:


        String str = "大家好,我是练习两年半的个人练习生,cxk";

        //- String substring(String str,int start):避免异常地从指定的String获取一个子字符串。
        String substring1 = StringUtils.substring(str, 4);
        
        //- String substring(String str,int start, int end):可避免异常地从指定的String获取一个子字符串。
        String substring2 = StringUtils.substring(str, 4, 7);
        
        //- String substringAfter(String str,String separator):在第一次出现分隔符后获取子字符串。
        String substringAfter = StringUtils.substringAfter(str, ",");
        
        //- String substringAfterLast(String str,String separator):在最后一次出现分隔符之后获取子字符串。
        String substringAfterLast = StringUtils.substringAfterLast(str, ",");
        
        //- String substringBefore(String str,String separator):在第一次出现分隔符之前获取子字符串。
        String substringBefore = StringUtils.substringBefore(str, ",");
        
        //- String substringBeforeLast(String str,String separator):在最后一次出现分隔符之前获取子字符串。
        String substringBeforeLast = StringUtils.substringBeforeLast(str, ",");
        
        //- String substringBetween(String str,String tag):获取嵌套在同一String的两个实例之间的String。
        String substringBetween1 = StringUtils.substringBetween(str, ",");
        
        // - String  substringBetween(String str, String open, String close):获取嵌套在两个字符串之间的字符串。
        String substringBetween2 = StringUtils.substringBetween(str, "好", "的");

        System.out.println(substring1);
        System.out.println(substring2);
        System.out.println(substringAfter);
        System.out.println(substringAfterLast);
        System.out.println(substringBefore);
        System.out.println(substringBeforeLast);
        System.out.println(substringBetween1);
        System.out.println(substringBetween2);


        

在这里插入图片描述

4 写在最后

注意:substring() 方法是按字符截取,而不是按字节截取。
工具类没什么神奇的,都是编写好的方法直接拿来用的,省事,也可以自行尝试编写工具类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最高月薪15.5K,成大事不在于力量的大小,而在于能坚持多久~

在前几天的世界杯八强赛中&#xff0c;阿根廷通过点球战胜了荷兰&#xff0c;闯入了四强。 说起阿根廷&#xff0c;就不得不提起梅西&#xff0c;这个被众多球迷誉为天才的球王&#xff0c;可实际上&#xff0c;在他的父亲眼中&#xff0c;却从不称自己的儿子为天才&#xff0…

java 课设-超级玛丽游戏

题目&#xff1a; 本程序是针对超级玛丽小游戏的 JAVA 程序&#xff0c;进入游戏后首先用鼠标点击 GUI 窗口&#xff0c;然后开始游 戏&#xff0c;利用方向键来控制的马里奥的移动&#xff0c;同时检测马里奥与场景中的障碍物和敌人的碰撞&#xff0c;并判断马里 奥的可移动性…

.net 移动开发 MAUI

.net 移动开发 MAUI新建一个Hello World运行效果修改一下&#xff0c;做个加法运算吧运行效果创建新的内容页修改xaml内容添加逻辑内容主页面添加一个按钮并且增加路由按钮事件添加路由整体感受第一&#xff1a;WPF第二&#xff1a;小程序所有的页面跳转都是借助路由第三&#…

Win11怎么更改时区?

Win11可以自动检测配置用户的时区来显示正确的时间&#xff0c;如果由于一些特殊原因导致系统时区错误&#xff0c;显示时间也错误的话&#xff0c;这时候要怎么调整呢&#xff1f;下面小编就来教教大家更换Windows 11时区的方法。 方法一&#xff1a;在 Windows 11 上更改时区…

新旧电脑数据如何迁移?电脑数据导入到另一台电脑

新旧电脑数据如何迁移&#xff1f;换电脑是一件好事&#xff0c;换更新版本的电脑&#xff0c;还可以体验新功能。您需要找到将数据传输到新电脑的有效方法。电脑数据导入到另一台电脑&#xff0c;接下来的内容将为大家揭晓答案&#xff01; 方法1、使用专业的数据传输迁移数据…

[附源码]计算机毕业设计的玉石交易系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

cookie 和 session 的区别

1. 前言 cookie 和 session 的区别是什么&#xff1f;这个问题在面试中问到的频率非常高 cookie 和 session 的共同点: 都是用来记录用户访问浏览器时保存的数据&#xff0c;比如&#xff1a;用户的身份信息等 2. cookie 和 session 的工作原理 cookie 工作原理: 浏览器端第…

【自然语言处理】隐马尔科夫模型【Ⅲ】估计问题

有任何的书写错误、排版错误、概念错误等&#xff0c;希望大家包含指正。 由于字数限制&#xff0c;分成六篇博客。 【自然语言处理】隐马尔可夫模型【Ⅰ】马尔可夫模型 【自然语言处理】隐马尔科夫模型【Ⅱ】隐马尔科夫模型概述 【自然语言处理】隐马尔科夫模型【Ⅲ】估计问题…

Rsyslog+MariaDB搭建Rsyslog日志服务器

rsyslog是一个linux系统日志服务的工具&#xff0c;主要用来监控收集系统从开机运行之后所发生的所有日志&#xff0c;包括内核日志&#xff0c;服务日志&#xff0c;应用日志等等&#xff1b;记录的日志全部都写到/var/log下面&#xff0c;常用的有dmsg&#xff08;内核日志&a…

带你手把手实操一个RPC框架

前言&#xff1a; 这篇文章我们来聊一聊RPC框架&#xff0c;为什么要聊RPC呢 &#xff1f; 首先从个人成长角度&#xff0c;如果一个新时代码农能清楚的了解RPC框架所具备的要素&#xff0c;掌握RPC框架中涉及的服务注册发现、负载均衡、序列化协议、RPC通信协议、Socket通信…

Linux 安装 Redis教程

1.切换到目录/use/local/src cd /use/local/src 2.下载文件 wget https://download.redis.io/releases/redis-6.2.6.tar.gz 3.文件解包 tar xzf redis-6.2.6.tar.gz 4.将解压后的包移动到/usr/local/redis目录下 mv redis-6.2.6 /usr/local/redis 5.切换到/usr/local/r…

Vue3这样子结合hook写弹窗组件更快更高效

为什么会有这个想法 在管理后台开发过程中&#xff0c;涉及到太多的弹窗业务弹窗&#xff0c;其中最多的就是“添加XX数据”&#xff0c;“编辑XX数据”&#xff0c;“查看XX详情数据”等弹窗类型最多。 这些弹窗组件的代码&#xff0c;很多都是相同的&#xff0c;例如组件状…

DBCO-PEG-NHS,二苯并环辛炔(DBCO)PEG-NHS衍生物,分子量MV 3.4K 5K

1、产品描述&#xff1a; 二苯并环辛炔&#xff08;DBCO&#xff09;PEG-NHS衍生物可以在不需要任何金属催化剂的情况下进行化学反应。菌株促进的环辛炔和叠氮化合物的1,3-偶极环加成反应&#xff0c;也称为无铜点击反应&#xff0c;是一种双正交反应&#xff0c;可使两个分子…

【Java版oj】day05统计回文

目录 一、原题再现 二、问题分析 三、完整代码 一、原题再现 统计回文_牛客题霸_牛客网 描述 “回文串”是一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串&#xff0c;生日的时候她得到两个礼物分别…

ADI Blackfin DSP处理器-BF533的开发详解50:RGBtoGary (图像灰度提取处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像灰度提取处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的…

OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。 是什么使得电脑工作? 驱动,驱使着硬件完成工作。 谁来写驱动? 制造电脑的公司自己来写驱动,因…

#芯片# N25Q128A21BSF40F

数据手册下载链接&#xff1a;N25Q128A21BSF40F 0. 指令集 1.基本介绍 SPI兼容串行总线接口。108 MHz&#xff08;最大&#xff09;时钟频率。推荐工作电压&#xff1a;1.8 V。单电源电压1.7 V至2 V。支持传统SPI协议&#xff0c;Quad I/O或Dual I/O SPI协议。四路/双路I/O指…

bug的生命周期你知道吗?一张图带你看懂它!

目录 1、什么是bug 2、bug的生命周期 3、如何描述一个bug 4、bug的级别 1、什么是bug 软件的bug狭义方面可以理解为是指软件程序的漏洞或缺陷&#xff0c;广义方面除找到程序漏洞之外&#xff0c;还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差…

【全网惟一面向软件测试人员的Python基础教程】- 你知道Python代码是怎样运行的吗?

全网惟一面向软件测试人员的Python基础教程 起点&#xff1a;《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗&#xff1f; 文章目录全网惟一面向软件测试人员的Python基础教程…

如何写好科研论文:Introduction(2)

导读 本系列[1]将切片介绍如何写好科研论文&#xff0c;包含了&#xff1a;摘要&#xff0c;背景介绍&#xff0c;方法&#xff0c;结果&#xff0c;讨论等。 由于翻译能力有限&#xff0c;强力推荐有需要的伙伴&#xff0c;直接在文末找到参考链接&#xff0c;阅读原文&#x…