Java删除字符串的中间部分
我希望以下输入具有以下输出:
input: adele
output: ae
代码:
public class delDel {
public static String delDel(String str) {
StringBuilder sb = new StringBuilder();
if(str.length() < 3){
return str;
}
else if(str.substring(1, 3).equals("del")){
StringBuilder afterRemove = sb.delete(1, 3);
return afterRemove.toString();
}
else{
return str;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String yourStr = input.nextLine();
System.out.println(delDel(yourStr));
}
}
但我一直得到相同的输入
# 1 楼答案
这里有多个问题:
StringBuilder
未使用输入字符串初始化。它应该是StringBuilder sb = new StringBuilder(str);
因此,它总是空的李>substring
和delete
方法处理最后一个索引是独占的,而不是包含的。因此,要获取从索引1开始的长度为3的子字符串,需要调用str.substring(1, 4)
李>更正代码:
旁注:由于只在一种情况下使用
StringBuilder
,因此可以将其声明移动到else if
中(这样,当字符串少于3个字符时,就不会创建无用的对象)