Tipps und Tricks rund um .NET und Visual Studio

FCL Erweiterungsmethode String.Truncate()
Kommentare

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer teilen in der Kolumne „.NETversum“ ihr Expertenwissen rund um .NET-Tools und WPF mit.

In Visual Basic ist die Left()-Funktion ein wichtiges Instrument, um die Länge einer Zeichenkette zu begrenzen, zum Beispiel vor der Übergabe an ein Datenbankfeld begrenzter Länge. Überstehende Zeichen werden dabei abgeschnitten. In C# gibt es diese Funktion nicht, man muss immer mit String.SubString() arbeiten. Aber Achtung: Wenn die Zeichenkette kleiner ist als die angegebene Maximallänge, kommt ArgumentOutOfRangeException („Index and length must refer to a location within the string.“). Also muss man vorher prüfen, ob die Zeichenkette lang genug ist. Das würde dann folgendermaßen aussehen:

string Eingabe3 = "0123456789";
string ReduzierteEingabe2 = Eingabe3.Substring(0, Math.Min(5, Eingabe3.Length));
Console.WriteLine(ReduzierteEingabe2);  

Nun kann man zwar in C# eine Referenz auf die Microsoft.VisualBasic.dll setzen und schreiben:

string ReduzierteEingabe1 = Microsoft.VisualBasic.Strings.Left(Eingabe3, 5);
Console.WriteLine(ReduzierteEingabe1);  

Aber es gibt eine ganze Menge C#-Entwickler, die sich vor dieser Referenz fürchten. Und eine ganze Menge „Gutachter“, die die Softwarearchitektur deswegen sofort abwerten würden. Wie wäre es mit:

string ReduzierteEingabe2 = Eingabe3.Truncate(5);
Console.WriteLine(ReduzierteEingabe2);  

Truncate() ist eine Erweiterungsmethode für die Klasse System.String. Dabei kann man optional noch angeben, ob das Abschneiden der Zeichenkette durch ein Auslassungszeichen kenntlich gemacht werden soll. Im Standard sind das drei Punkte. So macht Eingabe3.Truncate(5, true, „?“) aus 0123456789 ein 0123?. Das Auslassungszeichen wird bei der Maximallänge also mit berücksichtigt.

namespace ITVisions
{
 public static class StringExtensions
 {
  /// 
  /// Begrenzt einen String auf n zeichen
  /// 
  /// Zeichenkette
  ///  ggf. reduzierte Zeichenkette
  public static string Truncate(this string obj, int Anz, bool WithDots = false, string Dots = "...")
  {
   if (obj == null) return obj;
   if (obj.Length <= Anz) return obj;
   if (WithDots) return obj.Substring(0, Anz - Dots.Length) + Dots;
   return obj.Substring(0, Anz);
  }
}
}  
Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer arbeiten bei www.IT-Visions.de als Softwarearchitekten, Berater und Trainer für .NET-Technologien. Dabei unterstützen sie zahlreiche Unternehmen beim Einsatz von .NET und entwickeln selbst in größeren Projekten. Sie haben zahlreiche Fachbücher geschrieben und gehören seit vielen Jahren zu den Hauptsprechern auf der BASTA!. Manfred Steyer ist zudem für den Fachbereich "Software Engineering" der Studienrichtung "IT und Wirtschaftsinformatik" an der FH CAMPUS 02 in Graz verantwortlich. Dr. Holger Schwichtenberg unterrichtet in Lehraufträgen an den Fachhochschulen Münster und Graz.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -