Java提供了几种从字符串中删除子字符串的方法。
使用 replace 方法
此方法属于Java String类,并被重载以提供同一方法的两种不同实现。
在第一种方法中,将一个新字符添加到字符串中,以替换之前的每个字符。
这种方法在更新所有旧字符之后返回带有新字符的字符串。
语法:
string.replace(char oldChar, char newChar)
如果在字符串中找不到新字符,则返回此字符串。
示例:
public class RemoveSubString
{
public static void main(String[] args) {
String para = "JavatPoint is for learning purpose";
String replace = para.replace('e', 'o');
System.out.println(replace);
}
}
输出:
使用Charsequence
第二种方法是将所需的字符串替换成CharSequence,而CharSequence只是一个字符的集合。
语法:
string.replace(char oldChar, char newChar)
这个方法和第一个方法的不同之处在于它替换了一个字符串。
示例:
public class RemoveSubString
{
public static void main(String[] arg){
String para = "John like to learn programming";
String replace = para.replace("learn", "teach");
System.out.println(replace);
}
}
输出:
用空字符串替换子字符串
Java允许你轻松地用一个空的String来替换你想从String中删除的子串。
语法:
string.replace(char oldChar, empty char)
示例:
package org.arpit.java2blog;
public class RemoveSubStringFromString {
public static void main(String[] arg) {
String para = "John like to learn code";
String replace = para.replace("to learn", "");
System.out.println(replace);
}
}
输出:
使用String的replaceFirst方法
此方法搜索与正则表达式匹配的字符串,如果找到,则用给定的字符串替换它。
内部实现中,这个函数通过使用Pattern类的compile()和matcher()方法,使用正则表达式提取文本。
语法:
string.replaceFirst(No. of digit, new digit)
将创建一个正则表达式来从字符串中提取一个数字,并将其替换为另一个数字作为字符串。
注意:这个数字只会改变字符串的前两位数字;其余数字将保持不变。
示例:
package org.arpit.java2blog;
public class RemoveSubStringFromString {
public static void main(String[] arg) {
String para = "John is 101 years old, and Mary is 20 years old";
String replaceFirst = para.replaceFirst("\\d\\d\\d", "20");
System.out.println(replaceFirst);
}
}
输出:
replaceFirst()方法
replaceFirst()方法可以与空String一起使用,以从String中删除子字符串。
语法:
string.replace(No. of digit, empty char)
示例:
package org.arpit.java2blog.entry;
public class RemoveSubStringFromString{
public static void main(String[] arg) {
String para = " John is 101 years old, and Mary is 20 years old ";
String parafirstreplace = para.replaceFirst("\\d\\d", "");
System.out.println(parafirstreplace);
}}
输出:
使用replaceAll方法
与replaceFirst相反,replaceAll方法利用正则表达式替换字符串的每个实例。
与replaceFirst类似,该方法使用compile()和matcher()方法,使用正则表达式提取字符串。如果正则表达式不正确,它还会产生PatternSyntaxException。
语法:
String replaceAll(No. of digit, int new number)
我们将使用一个正则表达式从字符串中取出所有数字,并替换每个实例中的数字。
这个正则表达式可以识别0到9之间的任何数字。
示例:
public class RemoveSubStringFromString {
public static void main(String[] arg) {
String para = " John is 10 years old, and Mary is 20 years old ";
String parareplace = para.replaceAll("\\d\\d", "30");
System.out.println(parareplace);
}}
输出:
replaceAll()方法
使用replaceAll()方法,可以使用空String从字符串中删除子字符串。
语法:
string.replace(No. of digit, empty char)
示例:
package org.arpit.java2blog;
public class RemoveSubStringFromString {
public static void main(String[] arg) {
String replaceAll = " John is 10 years old, and Mary is 20 years old ";
String replaceAllNumbers = replaceAll.replaceAll("\\d\\d", "");
System.out.println(replaceAllNumbers);
}
}
输出:
使用StringBuilder的delete()方法
为了从字符串中添加和删除字符,StringBuilder保存了一个可修改的字符序列。
一个初始容量为16个字符的字符串构建器是由空的StringBuilder函数Object() {[native code]}
创建的,如果内部缓冲区溢出,则会自动创建一个更大的字符串构建器。
要从字符串中删除的子字符串的开始和结束被指定为delete()函数的第一个和第二个int形参。
最后一个索引是互斥的,因为它从第二个参数中减去1,但开始索引是包含的。
语法:
public StringBuilder delete(int start,int end)
当起始值为负值、大于字符串的长度或大于字符串的结束时,将抛出StringIndexOutOfBoundsException
异常。当起点和终点相等时,不进行任何调整。
示例:
public class main{
public static void main(String[] args){
StringBuilder stringBuilder =
new StringBuilder("Java is language or programming language");
StringBuilder builder = stringBuilder.delete(7, 19);
System.out.println(builder.toString());
}
}
输出:
使用StringBuilder replace()方法
replace()函数和delete()方法之间的唯一区别是第三个参数,它用于替换从字符串中删除的字符。
如果需要替换较大的字符串,则会增加大小以适应字符串的长度。
语法:
string.replace(int start, int end, char newChar)
函数toString() {[native code]}()可用于在该方法返回StringBuilder后打印更新后的字符串。
示例:
public class main{
public static void main(String[] args){
StringBuilder stringBuilder =
new StringBuilder("Java is Code");
StringBuilder builder = stringBuilder.replace(8, 12, "Programming language");
System.out.println(builder.toString());
}
}
输出:
总结
在本文中,您已经学习了如何替换和删除字符以从字符串中删除子字符串。提供的技术包括StringBuilder delete()和replace()方法的使用,以及字符串replace()、replaceFirst()和replaceAll()函数。