Feedback

C# - String durchsuchen: Letztes Vorkommen vor...

Veröffentlicht von am 19.08.2015
(0 Bewertungen)
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
Snippet in VB übersetzen
/// <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;
}
Abgelegt unter String, Index, Until, Find, Analyze, Parse.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!