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;
}
}
Kommentare zum Snippet