r15ch13
10/20/2015 - 11:27 PM

insertWordAtWhitespace.cs

private static string insert(string text, string wort, int pos)
{
    if (pos == 0)
        return wort + " " + text;

    var newText = "";
    var wordCounter = 0;
    var inserted = false;

    for (var i = 0; i < text.Length; i++)
    {
        newText += text[i];

        if (inserted) continue;

        if (text[i] == ' ')
        {
            wordCounter++;
        }

        if (wordCounter == pos)
        {
            newText += wort + " ";
            inserted = true;
        }
    }

    if (!inserted)
        newText += " " + wort;

    return newText;
}

/// <summary>
/// lynxx's Methode
/// </summary>
/// <param name="text"></param>
/// <param name="injection"></param>
/// <param name="position"></param>
/// <returns></returns>
private string injectLynxxString(string text, string injection, int position)
{
    // erzeuge einen Leeren String für die Rückgabe
    string result = "";
    // dann einen Textoffset
    int textOffset = 0;

    // Wenn Position 0 ist einfach Wort anhängen und Rückgabestring zurückgeben
    if (position == 0)
    {
        return injection + " " + text;
    }

    // dann eine Schleife die bis pos läuft
    for (int i = 0; i <= position - 1; i++)
    {
        // innerhalb dieser Schleife eine Schleife 
        for (int j = textOffset; j <= text.Length - 1; j++)
        {
            // die Textoffset solange erhöht bis ein Leerzeichen gefunden wurde
            textOffset++;

            // jedes Zeichen das bisher gefunde wurde kannst du schonmal an den Rückgabestring anhängen
            result += text[j];

            //  Beim Leerzeichen brichst du die innerste Schleife ab
            if (text[j] == ' ')
            {
                break;
            }
        }
    }

    // Nach diesen beiden Schleifeblöcken prüfen ob der Textoffset größer als 0 ist und ob das letzte Zeichen kein Leerzeichen ist, falls nicht eins anhängen.
    if (textOffset > 0 && result.Last() != ' ')
    {
        result += " ";
    }

    // Nun das Wort anhängen.
    result += injection;

    if (textOffset < text.Length)
    {
        // Falls das Textende noch nicht erreicht ist ein Leerzeichen anhängen.
        result += " ";

        // Und die restlichen Zeichen in "Text" an Rückgabestring anhängen.
        for (int i = textOffset; i <= text.Length - 1; i++)
        {
            result += text[i];
        }
    }

    // Rückgabestring zurückgeben.
    return result;
}