private RightToLeftIndexSearch ( enIndexFinderOccurrence occurrence, int firstIndex, int lastIndex, string stringToSearchIn, string charsToSearchFor, System.StringComparison comparisonType ) : IEnumerable |
||
occurrence | enIndexFinderOccurrence | |
firstIndex | int | |
lastIndex | int | |
stringToSearchIn | string | |
charsToSearchFor | string | |
comparisonType | System.StringComparison | |
return | IEnumerable |
private IEnumerable<int> RightToLeftIndexSearch(enIndexFinderOccurrence occurrence, int firstIndex, int lastIndex, string stringToSearchIn, string charsToSearchFor, StringComparison comparisonType)
{
int index = -1;
IEnumerable<int> result;
switch(occurrence)
{
case enIndexFinderOccurrence.FirstOccurrence:
if(lastIndex != -1)
{
index = stringToSearchIn.Length - lastIndex - (charsToSearchFor.Length - 1);
}
result = new[] { index };
break;
case enIndexFinderOccurrence.LastOccurrence:
if(firstIndex != -1)
{
index = stringToSearchIn.Length - firstIndex - (charsToSearchFor.Length - 1);
}
result = new[] { index };
break;
case enIndexFinderOccurrence.AllOccurrences:
List<int> foundIndexes = new List<int>();
stringToSearchIn = stringToSearchIn.ReverseString();
int currentIndex = firstIndex;
while(currentIndex != -1 && currentIndex != stringToSearchIn.Length)
{
currentIndex = stringToSearchIn.IndexOf(charsToSearchFor, currentIndex, comparisonType);
if(currentIndex != -1)
{
currentIndex++;
foundIndexes.Add(currentIndex);
}
}
result = foundIndexes.ToArray();
break;
default:
throw new Exception("Error In Dev2IndexFinder");
}
return result;
}