fromindex = str.indexOf(sonstr, fromindex))!=-1是什么意思
时间: 2024-04-03 21:36:52 浏览: 18
这段代码使用了Java中的String类的indexOf()方法,在原字符串str中查找子字符串sonstr的位置。
具体来说,该方法的语法为:`int indexOf(String str, int fromIndex)`,其中str是要查找的子字符串,fromIndex是查找的起始位置。这个方法返回子字符串在原字符串中第一次出现的位置,如果没有找到则返回-1。
在这段代码中,fromindex变量被用来记录上一次找到sonstr的位置,也就是下一次查找sonstr的起始位置。由于该代码段需要查找所有sonstr出现的位置,因此需要在indexOf()方法中将fromindex作为参数,以便从上一次找到的位置之后继续查找。
同时,使用!=操作符和-1进行比较,是为了判断是否找到了sonstr。如果找到了,则返回sonstr在原字符串中的位置,如果没有找到则返回-1。
相关问题
while(true) { if((fromindex = str.indexOf(sonstr, fromindex))!=-1) { fromindex+=sonstr.length(); System.out.println(fromindex); count++; }else { break; } }再详细分析这串代码
这段代码是一个字符串匹配的实现,主要作用是在一个字符串中查找另一个子字符串出现的次数,并输出子字符串出现的位置。具体实现思路如下:
首先,使用while循环不断进行字符串匹配,直到找不到子字符串为止。在循环中,使用indexOf()方法查找子字符串在原字符串中的位置,如果找到了子字符串,就将该位置记录下来,并将查找起始位置设置为子字符串后面的位置(也就是下一次查找的起始位置)。同时,输出子字符串在原字符串中的位置并计数器加1。
如果没有找到子字符串,就跳出while循环,返回计数器的值。
需要注意的是,这段代码中使用了一个变量fromindex来记录查找起始位置,这个变量需要在while循环外部初始化为0,以便第一次查找从字符串的开头开始。同时,该代码块中使用了break语句,用于在找到所有的子字符串之后跳出循环,避免无限循环。
public class Bianchen { public static void main(String[] args) { // TODO Auto-generated method stub String str = "abtyababdabcabcdabcde"; String sonstr ="ab"; int count = 0; int fromindex=0; while(true) { if((fromindex = str.indexOf(sonstr, fromindex))!=-1) { fromindex+=sonstr.length(); System.out.println(fromindex); count++; }else { break; } } System.out.println("子串:"+sonstr+"共出现了"+count+"次"); } }详细分析以上函数
以上代码是一个 Java 程序,其中定义了一个 Bianchen 类,包含了一个 main 方法。程序的主要功能是在一个字符串 str 中查找子串 sonstr,并输出子串在字符串中出现的次数。
具体分析如下:
1. 定义字符串 str 和子串 sonstr。
```
String str = "abtyababdabcabcdabcde";
String sonstr ="ab";
```
2. 定义计数器 count 和查找起始位置 fromindex,初始化为0。
```
int count = 0;
int fromindex=0;
```
3. 通过 while 循环在字符串 str 中查找子串 sonstr。
```
while(true) {
if((fromindex = str.indexOf(sonstr, fromindex))!=-1) {
fromindex+=sonstr.length();
System.out.println(fromindex);
count++;
}else {
break;
}
}
```
循环中的判断语句使用了 String 类的 indexOf 方法,该方法可以在一个字符串中查找指定子串第一次出现的位置,如果找到了就返回该位置,如果没找到就返回 -1。如果查找到了子串,就将计数器 count 加 1,并将查找起始位置 fromindex 更新为子串的下一个位置。如果没找到子串,就跳出循环。
4. 输出子串在字符串中出现的次数。
```
System.out.println("子串:"+sonstr+"共出现了"+count+"次");
```
最后,程序输出子串在字符串中出现的次数。
总的来说,以上代码是一个简单的字符串查找程序,通过 while 循环和 indexOf 方法实现了子串在字符串中的查找功能。