Die String-Klasse bietet diverse Erweiterungsmethoden bezüglich der Index-Bestimmung von Teilstrings an. Diese Methode erweitert das Repertoire um eine Methode die das letzte Vorkommen eines Teilstrings vor einem bestimmten Index findet.
Die Methode ist als Erweiterung für System.String implementiert und funktioniert auch in einer PCL.
Benötigter Namespace
System
/// <summary>
/// Ermittelt das letzte Vorkommen einer Teilzeichenfolge, dessen Index vor oder bei einem bestimmten Index liegt.
/// </summary>
/// <param name="s">Die zu durchsuchende Zeichenfolge.</param>
/// <param name="value">Die zu suchende Zeichenfolge.</param>
/// <param name="untilIndex">Der Index ab dem die Suche abgebrochen werden soll.</param>
/// <returns>Der Index des letzten Vorkommens von <paramref name="value"/> vor <paramref name="untilIndex"/>.</returns>
public static int LastIndexUntil(this string s, string value, int untilIndex)
{
if (s == null)
throw new ArgumentNullException("s", "s cannot be null");
if (value == null)
throw new ArgumentNullException("value", "value cannot be null");
if (untilIndex < 0)
throw new ArgumentOutOfRangeException("untilIndex", "untilIndex cannot be negative");
//for the case that untilIndex is greater than s.Length or value does not fit behind untilIndex into s
untilIndex = Math.Min(untilIndex, s.Length - value.Length);
if (value == "")
{
if (s.Length == 0)
return 0;
else
return untilIndex;
}
var chars = s.ToCharArray();
var c = value.ToCharArray();
for (int i = untilIndex; i >= 0; --i)
{
if (chars[i] == c[0])
{
bool found = true;
for (int j = 1; j < c.Length; ++j)
{
if (chars[i + j] != c[j])
{
found = false;
break;
}
}
if (found)
return i;
}
}
return -1;
}
Kommentare zum Snippet