键盘录入一个长字符串str,再录入一个短字符串subStr,要求长字符串str中包含多个子串subStr,打印出子串在字符串str中每次出现的索引
/**
*
* @author wei
*
*/
public class Demo {
public static void main(String[] args) {
String str = "abcdefghijkabcopqrstuabcyz";
String subStr = "abc";
int len = 0;//记录每次循环被截取的那一部分的长度
while(true) {
int arr = str.length();//记录每次截取之后的字符串的长度
if(!str.contains(subStr)) {//检测没有子串就跳出循环
break;
}
int indexOf = str.indexOf(subStr);//子串第一次在父串出现的索引
System.out.println(indexOf+len);
str = str.substring(indexOf+subStr.length());//将出现的子串截取出去
len += arr - str.length();
}
}
}
讲一下思路吧
首先是找到子串第一次出现的位置,输出当前子串在字符串第一次出现的索引,然后将字符串截取以
子串出现索引+子串的长度 开头到字符串末尾
记录字符串被删除的长度,在下一次输出索引时,加上被删除的长度就是子串的索引了。