C#: Fundstelle eines Suchbegriffs markieren
Hebt den Suchbegriff an der Funstelle hervor, ähnlich den Suchmaschinen. Die Anzahl der Zeichen vor und nach der Fundstelle 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...
// C#
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}{2}{3}{4}",
moreLeftTag,
referenceText.Substring(resultLeftStartPos, resultLeftLength),
referenceText.Substring(searchWordStartPos, searchWordLength),
referenceText.Substring(resultRightStartPos, resultRightLength),
moreRightTag);
}
else
{
return null; // gibt's nicht...
}
}
ASP.NET
August 2009 |
Permalink |
Feedback