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 个字符组成的字符串。

相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht2 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht2 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20242 小时前
Swift 数组
开发语言
吾日三省吾码3 小时前
JVM 性能调优
java
stm 学习ing3 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc4 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐4 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器