Java indexOf method for multiple matches in String

Eric picture Eric · Feb 14, 2011 · Viewed 51k times · Source

I had a question about the indexOf method. I want to find multiple cases of "X" in a string.

Suppose my string is "x is x is x is x", I want to find x in all of its index positions. But how do you do this for multiple cases? Is this even possible with indexOf?

I did int temp = str.indexOf('x'); It find the first x. I tried to do a for loop where i is initialized to length of string and this did not work since I kept finding the first x over and over.

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

But this does not work. Am I supposed to use regex? Because I don't really know how to use regex method.

Any help would be appreciated, thanks!

Answer

Paŭlo Ebermann picture Paŭlo Ebermann · Feb 14, 2011

There is a second variant of the indexOf method, which takes a start-index as a parameter.

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