Also ein String soll beispielsweise nur 20 Zeichen fassen können. Weist man einen längeren String zu, werden nur die ersten 20 Zeichen übernommen. Der Rest wird verworfen. Klar, sowas ist ein Array of String
string[20] c = "";
aber so, wie das früher in Pascal möglich war, gibt es nichts? Oder vielleicht:
Auf die schnelle mal einen kleinen Helper für dich, zur Anregung ;)
public string HasStringClaimedLength(string value, int claimedLength) { return (value.Length <= claimedLength) ? value : value.Substring(0, claimedLength); }
Aufruf:
Console.WriteLine(HasStringClaimedLength("Hier ein String der nur 10 Zeichen haben darf", 10));
Ausgabe:
Hier ein S
Als ExtensionMethod so:
public static class Extensions { public static string HasStringClaimedLength(this string value, int claimedLength) { return (value.Length <= claimedLength) ? value : value.Substring(0, claimedLength); } }
Aufruf:
Console.WriteLine("Hier ein String der nur 20 Zeichen haben darf".HasStringClaimedLength(20));
und weil mir heute fad war hier als fix und fertige klasse:
public class FixedString { private string _internalString = ""; private int _maxSize = 65536;
public FixedString() { }
public FixedString(int maxSize) { _maxSize = maxSize; }
public string FString { get { return _internalString; } set { if (value.Length <= _maxSize) { _internalString = value; } else { _internalString = value.Substring(0, _maxSize); } } }
public int FStringMaxSize { get { return _maxSize; } set { if (value > 0) { _maxSize = value; } else { throw new ArgumentOutOfRangeException("FixedString Length may not be zero!"); } } }
public override string ToString() { return _internalString; }
public string ToStringPadLeft() { return _internalString.PadLeft(_maxSize); }
public string ToStringPadLeft(char c) { return _internalString.PadLeft(_maxSize, c); }
public string ToStringPadRight() { return _internalString.PadRight(_maxSize); }
public string ToStringPadRight(char c) { return _internalString.PadRight(_maxSize, c); } }