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

2024-04-19 10:36

本文主要是介绍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() 方法用于获取指定索引处的单个字符。在使用这些方法时,要注意索引的起始值、结束值以及它们之间的关系,避免越界异常的发生。同时,要理解这些方法返回的是新的字符串对象,原字符串不会受到影响。

这篇关于String截取秘术:探秘substring与charAt的奇幻之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917301

相关文章

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

hdu2072(string的应用)

单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25447    Accepted Submission(s): 5957 Problem Description lily的好朋友xiaoou333最近很空,他

(nyoj308)substring

Substring 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 1 描述 You are given a string input. You are to find the longest substring of input such that the reversal of the substring is also a substring of

【UVA】10739 - String to Palindrome(动态规划)

比较水的动态规划 dp[i][j] 将原串 i ~ j 之内的字符转化为回文字符所需要的最小操作次数 其中删除操作和添加操作本质上是一样的。 三个状态转移方程: dp[i][j] = min(dp[i][j] ,dp[i + 1][j]); dp[i][j] = min(dp[i][j] ,dp[i + 1][j - 1]); dp[i][j] = min(dp[i][j] ,dp[

理解String的compareTo()方法返回值

compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序), 如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值。 如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符作比较, 以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。 我们可以通过阅读源码加深对compareTo()的理解: comp

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

【JavaScript】基本数据类型与引用数据类型区别(及为什么String、Boolean、Number基本数据类型会有属性和方法?)

基本数据类型   JavaScript基本数据类型包括:undefined、null、number、boolean、string。基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值。 1)基本数据类型的值是不可变的 任何方法都无法改变一个基本类型的值,比如一个字符串: var name = "change";name.substr();//hangconsole.log

leetcode#541. Reverse String II

题目 Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of

黑神话悟空背后的技术揭秘与代码探秘

《重塑神话:黑神话悟空背后的技术揭秘与代码探秘》 引言 在国产游戏领域,《黑神话:悟空》无疑是一颗璀璨的明星,它不仅融合了深厚的中国文化元素,更在技术上实现了诸多突破,为玩家带来了前所未有的沉浸式体验。本文将深入剖析《黑神话:悟空》背后的关键技术,并通过代码案例展示其技术实现的魅力。 一、高精度动作捕捉技术 《黑神话:悟空》中的角色动作之所以如此逼真,得益于高精度动作捕捉技术的应用