Hallo,
gibt es eine => einfache ≤ Methode, einen String zu kürzen, falls er zu lang ist?
Substring hat das Problem, dass eine Exception geworfen wird, falls der String zu kurz ist.
Ein if oder Math.Min würde ich gerne vermeiden - gibt's hier was einfacheres?
Viele Grüße,
Golo
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
string x = "Blubbblablum";
x = x.Length > 5 ? x.Substring(0,5) : x;
dieser Code kürzt den String "x" auf 5 Zeichen, beginnend beim ersten Zeichen.
Okay, das wäre die Kompaktversion von der Variante mit if ... ich denke mal, ohne so was in der Art kommt man nicht aus, oder?
Aber die Idee ist nicht dumm, danke 🙂
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
was anderes fiele mir jetzt nicht ein. Alternativ könnte man eine Substring-Extension schreiben, die keine Ausnahme schmeisst.
kla gehts 😄^^
string str = "blablablablabla";
char[] source = str.ToCharArray();
char[] dest = new char[5];
Array.Copy(source, dest, 5);
string newStr = new string(dest);
Console.WriteLine(newStr);
//glaube aber kaum das man sowas benutzen sollte
*g* ... na ja, wie gesagt, ich fragte ja nach => einfach ≤ ^^
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hallo,
Du könntest
Microsoft.VisualBasic.Strings.Left
benutzen. Funktioniert natürlich auch in C# problemlos.
Hmmmm, auch eine Idee 🙂
Danke!
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hallo Golo Roden,
ziemlich klarer Fall für eine Extension Method für String, die genau macht, was du willst.
herbivore
Leider muss es .NET 2.0 sein ... ansonsten wäre das sicher die beste Lösung.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hoi Golo
Wieso und wozu überhaupt wenn ich fragen darf?
Muss das im Bezug auf die Codegrösse / Komplexität oder der Laufzeit "klein" sein?
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallo Golo Roden,
unter .NET 2.0 könntest du einen statische Klasse StringEx mit der entsprechenden Methode machen. Die Aufruf-Syntax ist dann nicht so schön, wie bei Extension Methods. Aber inhaltlich läuft es auf das gleiche hinaus.
herbivore
Wieso und wozu überhaupt wenn ich fragen darf?
Muss das im Bezug auf die Codegrösse / Komplexität oder der Laufzeit "klein" sein?
Nur auf die Codegröße ... und es ist auch mehr eine "akademische" Frage, wir kamen da gestern im Kollegenkreis drauf ... steckt kein wirklich praktisches Problem dahinter ...
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hi, Golo.
unter .NET 2.0 könntest du einen statische Klasse StringEx mit der entsprechenden Methode machen. Die Aufruf-Syntax ist dann nicht so schön, wie bei Extension Methods. Aber inhaltlich läuft es auf das gleiche hinaus.
Unter .Net 2.0 funktionieren Extension Methods mit einem kleinen Trick auch (VS 2008 vorausgesetzt):
Einfach folgenden Code ins Projekt hinzufügen.
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class ExtensionAttribute : Attribute
{
}
}
Gruß, Christian.
AFAIK gabs auch compile tools für .NET 2.0 welche die Extension methods generieren.
Letztendlich ists ja nichts anderes als ein paar CompileFunktionen die einen weiteren aufruf in den IL code generieren.
Vom IL Code an sich gibt es praktisch keinen unterschied ob die methode direkt oder via ext. Method aufgerufen wurde.
Hab leider keinen link mehr parat
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)
namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] public class ExtensionAttribute : Attribute { } }
Und was genau hat das mit Extension Methods zu tun?
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
er meint wohl das http://kohari.org/2008/04/04/extension-methods-in-net-20/
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)
anscheinend funktioniert das wirklich so: http://www.danielmoth.com/Blog/2007/05/using-extension-methods-in-fx-20.html
Die Extensions sind ja eigentlich kein .Net-Feature, sondern nur eine Compiler-Spielerei.
sag ich doch 😉
Gleiches gilt auf für einige der anderen neuen features wie die autoproperties etc...
Irgendwo gabs dazu sehr gute Übersichten was was im ILCode verursacht.
Was in dem Zusammenhang auch noch interessant sien köntne ist die "LinkBridge"
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)