用于String中多个匹配的Java indexOf方法

Eri*_*ric 21 java indexof

我有一个关于indexOf方法的问题.我想在字符串中找到多个"X"的情况.

假设我的字符串是"x是x是x是x",我想在其所有索引位置找到x.但是你如何针对多种情况做这件事呢?indexOf甚至可以实现这一点吗?

我做了int temp = str.indexOf('x'); 它找到了第一个x.我尝试做一个for循环,其中我被初始化为字符串的长度,这不起作用,因为我一直在寻找第一个x.

for (int y = temp1; y >= 0;y-- ) 
{
    int temp = str.indexOf('x');
    System.out.println(temp);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我应该使用正则表达式吗?因为我真的不知道如何使用正则表达式方法.

任何帮助将不胜感激,谢谢!

Paŭ*_*ann 45

该方法的第二种变体indexOf采用start-index作为参数.

i = str.indexOf('x');
while(i >= 0) {
     System.out.println(i);
     i = str.indexOf('x', i+1);
}
Run Code Online (Sandbox Code Playgroud)

  • 啊,非常感谢大家.这很有意义,因为你只是根据最后一个匹配的位置迭代字符串. (2认同)

Nik*_*bak 11

还有另一个版本的indexOf方法,fromIndex作为参数.
因此,您可以在循环中调用它,每次prevPosition + 1作为第二个参数传递.

文档:http:
//download.oracle.com/javase/6/docs/api/java/lang/String.html#indexOf(int,int)


Rob*_*Rob 5

您可以使用indexOf指定起始索引.因此,在循环中存储"x"的最后位置,然后使用该索引+ 1再次搜索.