踩了一个坑,记录一下String类的substring方法。

substring方法可以用来截取字符串,它有两种表现形式:

  • substring(int beginIndex)
  • substring(int beginIndex, int endIndex)

1、substring(int beginIndex)

从输入参数所指定的位置开始(包含该开始位置的字符),截取到字符串最后一个位置。具体示例如下:

public class Test {
	
	public static void main(String[] args) {
		
		String s = "天气有点热";
		String newString = s.substring(1);
		System.out.println(newString);
	}
}

输出结果:

气有点热

注意点:截取字符串的下标位置是从0开始计起。

2、substring(int beginIndex, int endIndex)

根据指定的起始位置和终止位置,截取字符串。包含起始位置的字符,但不包含终止位置的字符。具体示例如下:

public class Test {
	
	public static void main(String[] args) {
		
		String s = "天气有点热";
		String newString = s.substring(1,4);
		System.out.println(newString);
	}
}

‘天’‘气’‘有’‘点’‘热’这5个字符对应的下标位置分别是0、1、2、3、4。

根据这个方法的特点,我们可以知道,上面的代码截取的是从第1个位置到第4个位置的字符串,包含第1个位置的字符但不包含第4个位置的字符,所以输出结果是:

气有点

注意点:endIndex的最大值为字符串的长度,不能超过。

一个有意思的地方是,当我们截取substring(0,0)时,得到的是结果是"",并不会报错,而且也不阻碍后面代码的执行。示例证明如下:

public class Test {
	
	public static void main(String[] args) {
		
		String s = "天气有点热";
		String newString = s.substring(0,0);
		System.out.println(newString.equals(""));
		System.out.println("这行输出可以执行");
	}
}

结果如下图所示。
结果
实际编码过程中,如果遇到要截取字符串做判断,而正好截取方法的参数是以变量形式传入,那么当两个变量都从0开始取值时,substring(0,0)是个要注意的点。例如

for (int i = 0; i < n; i++) {
	for (int j = 0; j < m; j++) {
		String string = s.substring(i, j);
		if (/*string的判断条件*/) {
			//控制代码
		}
	}
}
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐