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
GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

/// <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!