Java - 删除字符串的中间部分

时间:2015-11-28 17:59:40

标签: 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 个答案:

答案 0 :(得分:4)

这里有很多问题:

  • 您的StringBuilder未使用输入字符串进行初始化。它应该是StringBuilder sb = new StringBuilder(str);因此,它总是空的。
  • substringdelete方法适用于最后一个索引,不包括在内。因此,要从索引1开始获取长度为3的子字符串,您需要调用str.substring(1, 4)

更正后的代码:

public static String delDel(String str) {
    StringBuilder sb = new StringBuilder(str);
    if(str.length() < 3){
       return str;
    }
    else if(str.substring(1, 4).equals("del")){
        StringBuilder afterRemove = sb.delete(1, 4);
        return afterRemove.toString();
    }
    else{
       return str;
    }
}

旁注:由于你只在一个案例中使用StringBuilder,你可以在else if内移动它的声明(这样,你就不会创建一个无用的对象。字符串少于3个字符)。