其他
Java教程-Java String substring()方法
整理: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);
}
专属福利
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
}}
输出:
va
vatpoint
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); //返回异常
}
}
输出:
Javatpoint
point
Exception 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 Singh
Harbhajan Singh
Gurjit Singh
Sandeep Singh
Milkha 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.
我就知道你会点赞+“在看”