Feedback

C# - Fundstelle eines Suchbegriffs markieren

Veröffentlicht von am 8/19/2009
(3 Bewertungen)
Hebt den Suchbegriff an der Funstelle hervor, ähnlich den Suchmaschinen. Die Anzahl der Zeichen vor und nach der Fundstellen kann angegeben werden.

Beispiel:
Suche nach "nur" im Text "Ich bin nur ein kleiner Text."

Ergebnis (4 Zeichen vor und nach der Funsstelle):
...bin nur ein...
// Beispielaufruf:
// Label1.Text = MarkReference(TextBox1.Text, TextBox2.Text, 4);

public static string MarkReference(string text, string search, int num)
    {
        string referenceText = text.Trim();
        string searchWord = search.Trim();
        string moreLeftTag = "...", moreRightTag = "...";

        int searchWordStartPos = referenceText.IndexOf(searchWord,
                                        StringComparison.CurrentCultureIgnoreCase);
        if (searchWordStartPos >= 0)
        {
            int referenceTextLength = referenceText.Length;
            int searchWordLength = searchWord.Length;

            int resultLeftLength = num, resultRightLength = num;
            int resultLeftStartPos = searchWordStartPos - resultLeftLength;
            int resultRightStartPos = searchWordStartPos + searchWordLength;

            if (resultLeftStartPos < 0)
            {
                resultLeftLength = resultLeftLength + resultLeftStartPos;
                resultLeftStartPos = 0;
                moreLeftTag = "";
            }

            if ((resultRightStartPos + resultRightLength) > referenceTextLength)
            {
                resultRightLength = referenceTextLength - resultRightStartPos;
                moreRightTag = "";
            }

            return String.Format("{0}{1}<span id=\"highlight\">{2}</span>{3}{4}",
                        moreLeftTag,
                        referenceText.Substring(resultLeftStartPos, resultLeftLength),
                        referenceText.Substring(searchWordStartPos, searchWordLength),
                        referenceText.Substring(resultRightStartPos, resultRightLength),
                        moreRightTag);
        }
        else
        {
            return null;
        }
    }
Abgelegt unter suche, string, fundstelle, hervorheben, markieren.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!