String截取秘术:探秘substring与charAt的奇幻之旅

1. 概述

String类的截取方法主要用于从字符串中提取或截取特定部分的子串。这些方法为开发者提供了灵活的方式来处理文本数据,无论是为了解析字符串、获取字符串片段还是进行其他文本操作。


2. 用途

String类的截取方法主要用于从字符串中提取或截取特定部分的子串。这些方法在处理文本数据、解析字符串、获取字符串片段等场景中非常有用。


3. 常用方法

3.1 substring(int beginIndex)
  • 用途:返回从指定索引(包括)开始的字符串子串。
  • 参数:
    • beginIndex:开始截取的索引(包含)。
  • 示例:
String str = "Hello, World!";  
String subStr = str.substring(7); // 从索引7开始截取  
System.out.println(subStr); // 输出:World!
3.2 substring(int beginIndex, int endIndex)
  • 用途:返回从指定的 beginIndex 开始到 endIndex 结束的子串(不包含 endIndex)。
  • 参数:
    • beginIndex:开始截取的索引(包含)。
    • endIndex:结束截取的索引(不包含)。
  • 示例:
String str = "Hello, World!";  
String subStr = str.substring(0, 5); // 截取索引0到索引5之间的子串  
System.out.println(subStr); // 输出:Hello
3.3 charAt(int index)
  • 用途:返回指定索引处的 char 值。
  • 参数:
    • index:要返回字符的索引。
  • 示例:
String str = "Hello";  
char ch = str.charAt(1); // 获取索引1处的字符  
System.out.println(ch); // 输出:e

4. 错误案例示范

4.1 索引越界异常

当使用substring()方法时,如果提供的索引超出了字符串的范围,就会抛出StringIndexOutOfBoundsException异常。

public class SubstringErrorExample {  
    public static void main(String[] args) {  
        String str = "Hello";  
        try {  
            String subStr = str.substring(6); // 索引越界,因为字符串只有5个字符  
            System.out.println(subStr);  
        } catch (StringIndexOutOfBoundsException e) {  
            System.out.println("索引越界异常: " + e.getMessage());  
        }  
    }  
}
4.2 beginIndex大于endIndex

对于substring(int beginIndex, int endIndex)方法,如果beginIndex大于endIndex,同样会抛出StringIndexOutOfBoundsException异常。

public class SubstringErrorExample2 {  
    public static void main(String[] args) {  
        String str = "Hello";  
        try {  
            String subStr = str.substring(3, 2); // beginIndex大于endIndex  
            System.out.println(subStr);  
        } catch (StringIndexOutOfBoundsException e) {  
            System.out.println("beginIndex大于endIndex异常: " + e.getMessage());  
        }  
    }  
}
4.3 误用charAt()方法

虽然charAt()方法不是直接用于截取字符串,但如果不小心将它当作substring()使用,或者提供错误的索引,也可能导致问题。

public class CharAtErrorExample {  
    public static void main(String[] args) {  
        String str = "Hello";  
        try {  
            char ch = str.charAt(5); // 索引越界,因为字符串只有5个字符  
            System.out.println(ch);  
        } catch (StringIndexOutOfBoundsException e) {  
            System.out.println("charAt索引越界异常: " + e.getMessage());  
        }  
    }  
}
4.4 逻辑错误导致的错误截取

有时,即使代码没有抛出异常,但由于逻辑错误,可能截取到不符合预期的字符串片段。

public class LogicErrorExample {  
    public static void main(String[] args) {  
        String str = "Hello, World!";  
        // 逻辑错误:意图截取"World",但错误地提供了错误的索引  
        String subStr = str.substring(7, 11); // 实际截取到的是" Wor"  
        System.out.println(subStr); // 输出:Wor  
        // 正确的截取应该是:  
        String correctSubStr = str.substring(7, 12); // 输出:World  
        System.out.println(correctSubStr); // 输出:World  
    }  
}

在这些错误使用案例中,可以看到,正确理解和使用String类的截取方法至关重要。在调用这些方法时,务必确保提供的索引是有效的,并且符合预期的截取范围。同时,也要注意检查逻辑上的错误,确保截取到的字符串片段是符合要求的。


5. 注意事项

  • substring() 方法返回的是一个新的字符串对象,原字符串不会改变。
  • substring() 方法的索引是基于0的,即字符串的第一个字符的索引是0。
  • charAt() 方法仅用于获取单个字符,如果索引越界,会抛出 StringIndexOutOfBoundsException 异常。
  • 使用 substring() 方法时,要注意 beginIndex 必须小于等于 endIndex,否则也会抛出 StringIndexOutOfBoundsException 异常。

6. 总结

String类提供了多种截取字符串的方法,其中 substring() 方法用于截取子串,而 charAt() 方法用于获取指定索引处的单个字符。在使用这些方法时,要注意索引的起始值、结束值以及它们之间的关系,避免越界异常的发生。同时,要理解这些方法返回的是新的字符串对象,原字符串不会受到影响。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea 中导入的项目maven不自动下载依赖包

导入之后不会自动引入依赖包,如下图,external libraries 下没有依赖 解决方案:重新更新下maven的Local repository 即可

实测52.4MB/s!全志T3+FPGA的CSI通信案例分享!

CSI总线介绍与优势 CSI(CMOS sensor parallel interfaces)总线是一种用于连接图像传感器和处理器的并行通信接口,应用于工业自动化、能源电力、智慧医疗等领域,CSI总线接口示意图如下所示(以全志科技T3处理器的CSI0为…

Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

Qt实现Mysql数据库的连接,查询,修改,删除,增加功能 安装Mysql数据库,QtCreator Mysql选择Mysql Server 8.1版本安装。 Mysql Server 8.1安装过程 1.首先添加网络服务权限: WinR键输入compmgmt.msc进入…

密码学 | 数字签名 + 数字证书

🥑原文:数字签名和数字证书的原理解读 - 知乎 🥑声明:后文图中若未明确指明,默认是 Bob 的公钥或私钥。 Step1:Bob 有两把钥匙,一把是公钥,另一把是私钥。 Step2:Bob 把…

安全狗云眼的主要功能有哪些?

"安全狗云眼"是一款综合性的网络安全产品,主要用于实时监控和保护企业的网络安全。其核心功能包括威胁检测、漏洞扫描、日志管理和合规性检查等。 以下是安全狗云眼的主要功能详细介绍: 1、资产管理 定期获取并记录主机上的Web站点、Web容器、…

达梦数据库——异常崩溃(core)分析处理

CORE文件介绍 core文件是在程序异常崩溃时生成的文件,它包含了程序在崩溃瞬间的内存状态信息,主要是用来调试和分析问题。我们可以使用调试器工具(如GDB)来分析core文件,以便定位和解决问题。 CORE文件的配置 开启cor…

ActiveMQ主从架构和集群架构的介绍及搭建

目录 一、主从和集群架构的特点 1.1 主从架构的-Master/slave模式特点 1.2 集群架构-Cluster模式特点 二、ActiveMQ的主从架构 2.1 架构图 2.2 特点 2.3 实现方式(3种) 2.4 实现 (基于LevelDB复制) 2.4.1 准备环境 2.4.2…

2024化工制造企业数字化白皮书

来源:蓝凌研究院 中国石油和化学工业联合会发布2023年中国石油和化工行业经济运行情况。数据显示,2023年,我国石化行业实现营业收入15.95万亿元, 同比下降1.1%,利润总额8733.6亿元,行业经济运行总体呈现低…

vscode搭建C/C++环境

文章目录 一、安装vscode 二、下载安装g 三、安装VSCode插件 四、配置运行环境 一、安装vscode 直接官网免费下载:下载完成后进行安装,记得更换安装路径Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code editor redefine…

大数据------额外插件及技术------Git(完整知识点汇总)

Git 定义 它是分布式版本控制工具,主要用于管理开发过程中的源代码文件(如:Java类、xml文件、html页面等),在软件开发过程中被广泛应用 作用 代码回溯:快速回到某一代码历史版本版本切换:同一个…

Python文件处理--进阶

Python标准库文件操作相关模块: 1.使用pickle序列化 序列化指的是:将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的“串行化数据”转化成对象。我们可以使用pickle模块…

算法部署 | 使用TensorRT部署AlphaPose姿态估计算法

项目应用场景 面向 AlphaPose 姿态估计算法的推理加速场景,项目采用 TensorRT 进行 GPU 算法加速推理。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型转换 python pytorch2onnx.py --cfg ./configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --chec…

基于Springboot的简历系统

基于SpringbootVue的简历系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 简历模板 招聘会 求职论坛 系统公告 后台登录 后台首页 用户管理 简历模板 模板…

面试八股——JVM★

类加载 类加载器的定义 类加载器的类别 类装载的执行过程 类的装载过程: 加载: 验证: 准备: 这里设置初始值并不是传统意义的设置初始值(那个过程在初始化阶段)。 解析: 初始化: …

YOLOv8改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(包含C2f创新改进,解决低FLOPs陷阱)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…

servlet的三个重要的类(httpServlet 、httpServletRequst、 httpServletResponse)

一、httpServlet 写一个servlet代码一般都是要继承httpServlet 这个类,然后重写里面的方法 但是它有一个特点,根据之前写的代码,我们发现好像没有写main方法也能正常执行。 原因是:这个代码不是直接运行的,而是放到…

气象观测站点数据下载与处理

一、下载途径 全国400多个气象站气候数据(1942-2022) 王晓磊:中国空气质量/气象历史数据 | 北京市空气质量历史数据 气象数据免费下载网站整理 中国气象站观测的气象数据怎么下载 二、R语言处理 2.1 提取站点文件 library(dplyr) library(…

(助力国赛)数学建模可视化!!!含代码1(折线图、地图(点)、地图(线)、地图(多边形)、地图(密度)、环形图、环形柱状图、局部放大图)

众所周知,数学建模的过程中,将复杂的数据和模型结果通过可视化图形呈现出来,不仅能够帮助我们更深入地理解问题,还能够有效地向评委展示我们的研究成果。   今天,作者将与大家分享8种强大的数学建模可视化图形及其在…

解决VirtualBox虚拟机启动失败的问题

一.出现的问题(未能启动虚拟电脑,由于物理网卡未找到) 一、错误信息分析 “未能启动虚拟电脑,由于物理网卡未找到”:这个错误通常是由于VirtualBox无法识别或连接到物理网卡造成的。可能是由于驱动程序问题、网络设置错…

2024年阿里云最便宜的轻量应用服务器与云服务器价格及优惠购买入口

2024年,阿里云推出了几款价格最便宜的轻量应用服务器和云服务器,其中轻量应用服务器2核2G3M公网带宽50GB 高效云盘活动价格61元1年,经济型e实例4核16G10M公网带宽100G ESSD Entry云盘活动价格最低只要30元/1个月,通用算力型u1实例…