The following code isn't quite what you're looking for, but it should give you an idea of how you might approach this problem.
You could adapt the method to take two arguments: The number you want to match, and which match you want (1st, 2nd, 3rd, etc.).
The method could have a variable to count the number of matches. Then when you find a match and the count is where you want it, return that index. Otherwise, return -1 to indicate that it wasn't found.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com