Java截取(提取)子字符串(substring()),Java分割字符串(split())
在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。
1. substring(int beginIndex) 形式
此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如:
- String str = "我爱 java 编程";
- String result = str.substring(3);
- System.out.println(result); // 输出:Java 编程
2. substring(int beginIndex,int endIndex) 形式
此方法中的 beginIndex 表示截取的起始索引,截取的字符串中包括起始索引对应的字符;endIndex 表示结束索引,截取的字符串中不包括结束索引对应的字符,如果不指定 endIndex,则表示截取到目标字符串末尾。该方法用于提取位置 beginIndex 和位置 endIndex 位置之间的字符串部分。
这里需要特别注意的是, 对于开始位置 beginIndex, Java 是基于字符串的首字符索引为 0 处理的,但是对于结束位置 endIndex,Java 是基于字符串的首字符索引为 1 来处理的,如图 1 所示。

图1 字符串中的字符索引
注意:substring() 方法是按字符截取,而不是按字节截取。
例 1
创建一个字符串,对它使用 substring() 方法进行截取并输出结果。示例代码如下:
- public static void main(String[] args) {
- String day = "Today is Monday"; //原始字符串
- System.out.println("substring(0)结果:"+day.substring(0));
- System.out.println("substring(2)结果:"+day.substring(2));
- System.out.println("substring(10)结果:"+day.substring(10));
- System.out.println("substring(2,10)结果:"+day.substring(2,10));
- System.out.println("substring(0,5)结果:"+day.substring(0,5));
- }
输出结果如下所示:
substring(0)结果:Today is Monday substring(2)结果:day is Monday substring(10)结果:onday substring(2,10)结果:day is M substring(0,5)结果:Today
Java分割字符串(split())
String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式:
- str.split(String sign)
- str.split(String sign,int limit)
其中它们的含义如下:
- str 为需要分割的目标字符串。
- sign 为指定的分割符,可以是任意字符串。
- limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。
使用分隔符注意如下:
1)“.”和“|”都是转义字符,必须得加“\\”。
- 如果用“.”作为分隔的话,必须写成
String.split("\\."),这样才能正确的分隔开,不能用String.split(".")。 - 如果用“|”作为分隔的话,必须写成
String.split("\\|"),这样才能正确的分隔开,不能用String.split("|")。
2)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or")。
例 1
使用 split() 方法对字符串进行分割的实例如下:
- public static void main(String[] args) {
- String Colors = "Red,Black,White,Yellow,Blue";
- String[] arr1 = Colors.split(","); // 不限制元素个数
- String[] arr2 = Colors.split(",", 3); // 限制元素个数为3
- System.out.println("所有颜色为:");
- for (int i = 0; i < arr1.length; i++) {
- System.out.println(arr1[i]);
- }
- System.out.println("前三个颜色为:");
- for (int j = 0; j < arr2.length; j++) {
- System.out.println(arr2[j]);
- }
- }
输出结果如下:
所有颜色为: Red Black White Yellow Blue 前三个颜色为: Red Black White,Yellow,Blue
从输出的结果可以看出,当指定分割字符串后组成的数组长度(大于或等于 1)时,数组的前几个元素为字符串分割后的前几个字符,而最后一个元素为字符串的剩余部分。
例如,在该实例中,指定了 arr2 的长度为 3,而字符串 Colors 分割后组成的数组长度为 5。因此会将 arr2 中的前两个元素赋值为 Colors 分割后的前两个字符,arr2 中的第 3 个元素为 Colors 字符串的后 3 个字符组成的字符串。
相关文章:
Java截取(提取)子字符串(substring()),Java分割字符串(split())
在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,…...
从厨房间到股市:家庭主妇的华美转身
我一直是一个安于现状的家庭主妇。生活中,我热爱烹饪、园艺和照顾家人,但我也渴望能有更多的自我实现和价值感。在机缘巧合下,我接触到了卓扬网,一个专业的股票投资平台。从那刻起,我的人生发生了翻天覆地的变化。 初…...
Oracle 数据库的锁排查方法
关键字 oracle lock 问题描述 Oracle 数据库上锁问题如何排查 解决问题思路 准备数据 create table lock_test(name varchar(10),age varchar(10));insert into lock_test values(ff,10); insert into lock_test values(yy,20); insert into lock_test values(ll,30);Orac…...
混合精度训练原理之float16和float32数据之间的互相转换
混合精度训练原理之float16和float32数据之间的互相转换 本篇文章参考:全网最全-混合精度训练原理 上述文章已经讲解的比较详细,本文只是从数值角度分析: 1. float32转入float16的精度误差 2. 在深度学习的混精度训练当中,当参数…...
网络协议--ICMP:Internet控制报文协议
6.1 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。 ICMP报文是在IP数据报内部被传输的,如图6-1所示。 ICMP…...
《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网
目录 一. 在 Windows 操作系统中探测 HTTP/HTTPS 出网 1. Bitsadmin 命令 2.Certuil 命令 2.Linux系统探测HTTP/HTTPS出网 1.Curl命令 2.Wget命令 对目标服务器探测 HTTP/HTTPS 是否出网时,要根据目标系统类型执行命令,不同类型的操作系统使用的探…...
【Win11】系统重装教程(最新最详细)
目录 一.简介 二.用U盘制作PE系统 三、安装系统 软件:Windows 11版本:21H2语言:简体中文大小:5.14G安装环境:PE系统,至少7代处理器硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①丨…...
如何构建一个外卖微信小程序
随着外卖行业的不断发展,越来越多的商家开始关注外卖微信小程序的开发。微信小程序具有使用方便、快速上线、用户覆盖广等优势,成为了商家们的首选。 那么,如何快速开发一个外卖微信小程序呢?下面就让我们来看看吧! 首…...
小知识(5) el-table行样式失效问题
一、实现效果 子级呈现不同颜色去区分 二、最初代码 tips: 我这里使用的vue3 elementplus <el-table :row-class-name"tableRowClassName" >... </el-table>function tableRowClassName({ row, rowIndex }) {if (row.children.length 0) {return …...
【Docker】Docker数据的存储
默认情况下,在运行中的容器里创建的文件,被保存在一个可写的容器层里,如果容器被删除了,则对应的数据也随之删除了。 这个可写的容器层是和特定的容器绑定的,也就是这些数据无法方便的和其它容器共享。 Docker主要提…...
hive字段关键字问题处理
最近在xxl_job部署shell调度任务时,发现在编写Hql时,对一些使用关键字命名的字段无法解析,按开发规范,字段命名不应该有关键字,但是数据来源是第三方,无法修改,需要通过flume对从kafka的数据到hdfs上,数据是json格式,所以需要对关…...
指定顺序输出
系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...
(Java)中的数据类型和变量
文章目录 一、字面常量二、数据类型三、变量1.变量的概念2.语法的格式3.整型变量4.长整型变量5.短整型变量6.字节型变量 四、浮点型变量1.双精度浮点数2.单精度浮点数 五、字符型常量六、布尔型变量七、类型转换1.自动类型转换(隐式)2.强制类型转换(显式…...
SHELL脚本编程基础,bilibili王晓春老师课程个人笔记(写比较简单,仅供参考)
文章目录 一、第一天(Shell脚本编程基础)作者视频ppt部分作者视频操作编写一个hello.sh可执行文件使hello.sh可以到处运行没有执行权限的执行方式下载httpd(web服务器)curl字符界面浏览器 命令列表凌乱笔记 作业重点: …...
VS code运行vue项目
要在VS Code中启动Vue项目,您可以按照以下步骤进行操作: 1.打开VS Code,并确保已安装Vue.js插件(如Vetur)。 2.在VS Code的侧边栏中,选择您的Vue项目文件夹,或者使用菜单中的“文件”->“打…...
matlab中narginchk函数用法及其举例
matlab中narginchk函数用法及其举例 narginchk在编写子函数程序时候,在验证输入参数数目方面具有重要作用,本博文讲一讲该函数的用法。 一、narginchk功能 narginchk的作用是验证输入参数数目。 二、语法 narginchk(minArgs,maxArgs)narginchk(minA…...
k8s集群镜像下载加gradana监控加elk日志收集加devops加秒杀项目
展示 1.配套资料2.devops 3.elk日志收集 4.grafana监控 5.dashboard与反向代理(牵引模式) 反向代理又分为两种模式,反向代理…...
在 MyBatis-Plus 中,如果你想通过其他字段进行修改操作,可以使用条件构造器(Wrapper)来指定修改的条件。
在 MyBatis-Plus 中,如果你想通过其他字段进行修改操作,可以使用条件构造器(Wrapper)来指定修改的条件。 对不起,我在之前的回答中犯了一个错误。在条件构造器中,eq 方法的第一个参数应该是数据库表中的列…...
Python Opencv实践 - 入门使用Tesseract识别图片中的文字
做车牌识别项目前试一试tesseract识别中文。tesseract的安装使用请参考: Python OCR工具pytesseract详解 - 知乎pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
