Java截取(提取)子字符串(substring()),Java分割字符串(split())

在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。

1. substring(int beginIndex) 形式

此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如:

复制代码
  1. String str = "我爱 java 编程";
  2. String result = str.substring(3);
  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() 方法进行截取并输出结果。示例代码如下:

复制代码
  1. public static void main(String[] args) {
  2. String day = "Today is Monday"; //原始字符串
  3. System.out.println("substring(0)结果:"+day.substring(0));
  4. System.out.println("substring(2)结果:"+day.substring(2));
  5. System.out.println("substring(10)结果:"+day.substring(10));
  6. System.out.println("substring(2,10)结果:"+day.substring(2,10));
  7. System.out.println("substring(0,5)结果:"+day.substring(0,5));
  8. }

输出结果如下所示:

复制代码
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() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式:

复制代码
  1. str.split(String sign)
  2. 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() 方法对字符串进行分割的实例如下:

复制代码
  1. public static void main(String[] args) {
  2. String Colors = "Red,Black,White,Yellow,Blue";
  3. String[] arr1 = Colors.split(","); // 不限制元素个数
  4. String[] arr2 = Colors.split(",", 3); // 限制元素个数为3
  5. System.out.println("所有颜色为:");
  6. for (int i = 0; i < arr1.length; i++) {
  7. System.out.println(arr1[i]);
  8. }
  9. System.out.println("前三个颜色为:");
  10. for (int j = 0; j < arr2.length; j++) {
  11. System.out.println(arr2[j]);
  12. }
  13. }

输出结果如下:

复制代码
所有颜色为:
Red
Black
White
Yellow Blue
前三个颜色为:
Red
Black
White,Yellow,Blue

从输出的结果可以看出,当指定分割字符串后组成的数组长度(大于或等于 1)时,数组的前几个元素为字符串分割后的前几个字符,而最后一个元素为字符串的剩余部分。

例如,在该实例中,指定了 arr2 的长度为 3,而字符串 Colors 分割后组成的数组长度为 5。因此会将 arr2 中的前两个元素赋值为 Colors 分割后的前两个字符,arr2 中的第 3 个元素为 Colors 字符串的后 3 个字符组成的字符串。

相关推荐
浮游本尊38 分钟前
Java学习第22天 - 云原生与容器化
java
渣哥2 小时前
原来 Java 里线程安全集合有这么多种
java
间彧3 小时前
Spring Boot集成Spring Security完整指南
java
间彧3 小时前
Spring Secutiy基本原理及工作流程
java
Java水解4 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆6 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学6 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole7 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊7 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端