Feedback

C# - Strings verkürzen

Veröffentlicht von am 9/5/2013
(0 Bewertungen)
Besonders wenn man lokalisierte Anwendungen erstellt, ist es manchmal erforderlich Zeichenfolgen (Strings) auch verkürzen zu können. Diese Methode verkürzt einen String auf die angegebene Pixellänge.
Näheres steht in der XML-Dokumentation.

Hinweis: Ein Beispielprojekt ist auf meiner Webseite zu finden:
http://code-13.net/Tutorials/NET/StringShorter.aspx

Benötigte Namespaces:
System
System.Drawing
System.Text
System.Windows.Forms


Benötigte (zusätzliche) Verweise:
System.Windows.Forms.dll
System.Drawing


Hinweis: Die Methode ist als Erweiterung für System.String implementiert.
/// <summary>
/// Verkürzt einen String auf eine Bestimmte Länge in Pixeln.
/// </summary>
/// <param name="text">Der zu verkürzende Text.</param>
/// <param name="font">Die zu verwendende Schriftart für die Ermittlung.</param>
/// <param name="length">Die Maximallänge der zurück zu gebenden Zeichenfolge in Pixeln.</param>
/// <param name="appendEllipses"><c>True</c>, wenn in die angegebene Länge noch 3 Punkte (...) beinhalten soll, andernfalls <c>False</c>.</param>
/// <returns>Eine Zeichenfolge, welche in der angegebenen Schriftart <paramref name="length"/> Pixel lang ist.</returns>
/// <exception cref="System.ArgumentOutOfRangeException">Wird ausgelöst, wenn <paramref name="length"/> kleiner oder gleich 0 ist.</exception>
/// <exception cref="System.ArgumentNullException">Wird ausgelöst, wenn <paramref name="font"/> oder <paramref name="text"/> <c>null</c> ist.</exception>
public static string Short(this string text, Font font, int length, bool appendEllipses)
{
	if (length <= 0)
		throw new ArgumentOutOfRangeException("length", "length > 0!");
	if (font == null)
		throw new ArgumentNullException("font");
	if (text == null)
		throw new ArgumentNullException("text");

	StringBuilder sb = new StringBuilder();
	foreach (char c in text)
	{
		if (TextRenderer.MeasureText(sb.ToString() + c + (appendEllipses ? "..." : ""), font).Width < length)
			sb.Append(c);
	}
	if (appendEllipses)
		sb.Append("...");
	return sb.ToString();
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!