Feedback

Fundstelle eines Suchbegriffs markieren

// 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}""