Here’s a quick utility to get the Nth index of a Char in a String using the .NET IndexOf & LastIndexOf methods. Few points regarding this utility.
- If the Char is not found then, it will return -1.
- If for a string, say, str, whose value is http://abc.com/xyz, char ‘/’ has occurred only 3 times. So if you would try to get the 4th or higher index of ‘/’, it will always return 14, which is the index of the last occurrence of this char.
Following are the 2 methods that perform this task
private int GetNthIndexFromEnd(string str, int index, char delimeter) { int count = 0; int nthIndex = str.Length - 1; while (true) { int nthIndexTemp = str.LastIndexOf(delimeter, nthIndex); if (nthIndexTemp > -1) { ++count; nthIndex = nthIndexTemp; if (count == index) break; else --nthIndex; } else { //If the given delimiter is not present if (count == 0) nthIndex = -1; break; } } return nthIndex; } private int GetNthIndexFromStart(string str, int index, char delimeter) { int count = 0; int nthIndex = 0; while (true) { int nthIndexTemp = str.IndexOf(delimeter, nthIndex); if (nthIndexTemp > -1) { ++count; nthIndex = nthIndexTemp; if (count == index) break; else ++nthIndex; } else { //If the given delimiter is not present if (count == 0) nthIndex = -1; break; } } return nthIndex; }