当时不知道indexOf()的用法,所以用自己的思维实现了一下,不知道有没错,请大家指教下!当然有现成的方法,直接调用是最好的,不过联系下逻辑思维能力也是不错的。
package com.itheima8;
import java.util.Scanner;
/*第四题: 分析以下需求,并用代码实现(利用StringBuilder的delete方法完成)
1.键盘录入一个源字符串由字符串变量scrStr接收
2.键盘录入一个要删除的字符串由字符串变量delStr接收
3.要求
删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
4.代码运行打印格式:
请输入源字符串:java woaijava,i like jajavava i enjoy java
请输入要删除的字符串:java
控制台输出结果:源字符串中总共包含:5 个 java 删除java后的字符串为: woai,i like i enjoy*/
public class HomeWork4 {
public static void main(String[] args) {
DeleteString(inputReStr(),inputDeStr());
}
public static String inputReStr(){
System.out.println("请输入源字符串:");
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
public static String inputDeStr(){
System.out.println("请输入要删除的字符串:");
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
public static void DeleteString(String mainStr, String delStr){
boolean flag = true;
if(mainStr.length() < delStr.length()){
flag = false;
System.out.println("输入有误,请重新输入!");
DeleteString(inputReStr(),inputDeStr());
}
else{
StringBuilder sbMainStrB = new StringBuilder(mainStr);
int count = 0;
for(int i = 0 ; i <= sbMainStrB.length() - delStr.length(); i ++){
String strTemp = sbMainStrB.substring(i, i + delStr.length()).toString();
if(strTemp.equals(delStr)){
sbMainStrB.delete(i, i + delStr.length());
i = 0; //排除删除后又形成和删除字符串一样的字符串
count ++;
}
}
if((sbMainStrB.toString()).equals(delStr)){ //判断当字符串被删到长度与需删除的字符串相等时两字符串是否相等
sbMainStrB.delete(0, delStr.length());
count ++;
}
if(flag || count != 0) //保证输入错误时不输出0
System.out.println("源字符串中总共包含:" + count + "个 " + delStr + " 删除" + delStr +"后的字符串为: " + sbMainStrB);
}
}
}
|
|