查看原文
其他

Java教程-Java String substring()方法

点击关注 👉 鸭哥聊Java 2023-09-01

整理:Java面试那些事儿


Java String类的substring()方法返回字符串的一部分。


在Java的substring方法中,我们传递了beginIndex和endIndex两个数字位置,其中beginIndex是包含的,endIndex是不包含的。换句话说,beginIndex从0开始,而endIndex从1开始。


Java字符串中有两种类型的substring方法。


语法


public String substring(int startIndex) // type - 1 and public String substring(int startIndex, int endIndex) // type - 2

如果我们不指定endIndex,该方法将返回从startIndex开始的所有字符。


参数


startIndex:起始索引(包含)

endIndex:结束索引(不包含)


返回值


指定的子字符串


异常抛出


当满足以下任一条件时,抛出StringIndexOutOfBoundsException异常。


  • 如果起始索引是负值

  • 结束索引低于起始索引。

  • 起始索引或结束索引大于字符串中存在的字符的总数。

substring(int beginIndex)的内部实现public String substring(int beginIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } int subLen = value.length - beginIndex; if (subLen < 0) { throw new StringIndexOutOfBoundsException(subLen); } return (beginIndex == 0) ? this : new String(value, beginIndex, subLen); } substring(int beginIndex, int endIndex)的内部实现public String substring(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } if (endIndex > value.length) { throw new StringIndexOutOfBoundsException(endIndex); } int subLen = endIndex - beginIndex; if (subLen < 0) { throw new StringIndexOutOfBoundsException(subLen); } return ((beginIndex == 0) && (endIndex == value.length)) ? this : new String(value, beginIndex, subLen); }


专属福利

👉点击领取:651页Java面试题库


Java String substring()方法示例


文件名:SubstringExample.java

public class SubstringExample{ public static void main(String args[]){ String s1="javatpoint"; System.out.println(s1.substring(2,4));//returns va System.out.println(s1.substring(2));//returns vatpoint }}

输出:

vavatpoint

Java String substring()方法示例2


文件名:SubstringExample2.java

public class SubstringExample2 { public static void main(String[] args) { String s1="Javatpoint"; String substr = s1.substring(0); // 从 0 开始到结束 System.out.println(substr); String substr2 = s1.substring(5,10); // 从 5 开始到 10 System.out.println(substr2); String substr3 = s1.substring(5,15); //返回异常 } }

输出:

JavatpointpointException in thread "main" java.lang.StringIndexOutOfBoundsException: begin 5, end 15, length 10


substring()方法的应用


1)substring()方法可用于进行一些前缀或后缀提取。例如,我们可以有一个姓名列表,并且需要过滤出姓为"singh"的姓名。下面的程序展示了相同的效果。


文件名:SubstringExample3.java

public class SubstringExample3 { // main method public static void main(String argvs[]) { String str[] = { "Praveen Kumar", "Yuvraj Singh", "Harbhajan Singh", "Gurjit Singh", "Virat Kohli", "Rohit Sharma", "Sandeep Singh", "Milkha Singh" }; String surName = "Singh"; int surNameSize = surName.length(); int size = str.length; for(int j = 0; j < size; j++) { int length = str[j].length(); // 提取姓氏 String subStr = str[j].substring(length - surNameSize); // 检查姓氏是否等于“Singh” if(subStr.equals(surName)) { System.out.println(str[j]); } } } }

输出:

Yuvraj SinghHarbhajan SinghGurjit SinghSandeep SinghMilkha Singh


2)substring()方法还可用于检查字符串是否为回文。


文件名:SubstringExample4.java

public class SubstringExample4 { public boolean isPalindrome(String str) { int size = str.length(); // 处理基本情况 if(size == 0 || size == 1) { //一个空字符串 //或者只有一个字符的字符串 //总是回文 return true; } String f = str.substring(0, 1); String l = str.substring(size - 1); //比较字符串的第一个和最后一个字符 if(l.equals(f)) { //使用 substring() 方法递归地寻找解决方案 //为下一次递归减少 2 的字符数 return isPalindrome(str.substring(1, size - 1)); } return false; } // main method public static void main(String argvs[]) { //实例化类 SubstringExample4 SubstringExample4 obj = new SubstringExample4(); String str[] = { "madam", "rock", "eye", "noon", "kill" }; int size = str.length; for(int j = 0; j < size; j++) { if(obj.isPalindrome(str[j])) { System.out.println(str[j] + " is a palindrome."); } else { System.out.println(str[j] + " is not a palindrome."); } } } }


输出:

madam is a palindrome.rock is not a palindrome.eye is a palindrome.noon is a palindrome.
kill is not a palindrome.



程序员技术交流群
扫码进群记得备注:城市+昵称+技术方向
▲长按扫描
最近技术热文

我就知道你会点赞+“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存