Laden...

Format-String prüfen auf Gleitkommaausgabe

Erstellt von Turmoil vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.764 Views
T
Turmoil Themenstarter:in
60 Beiträge seit 2008
vor 6 Jahren
Format-String prüfen auf Gleitkommaausgabe

Hallo,

gibt es eine einfache Möglichkeit, um zu prüfen, ob ein Format-String für eine Gleitkomma-Zahl geeignet ist, z.B.:


string fmt = "F3";
if (FormatString.IsFlaotFormat(fmt))
{ var d = (double)5.5; }
else if (FormatString.IsDateFormat(fmt))
{ var d = DateTime.Now; }

Obiges Beispiel ist total sinnfrei, soll aber visualisieren was ich mit einfache Möglichkeit meine.

Grüße Turmoil

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Turmoil,

meinst du die TryParse(...)-Methoden?

Gruss

Coffeebean

T
Turmoil Themenstarter:in
60 Beiträge seit 2008
vor 6 Jahren

Hallo,

nicht ganz, ich will ja nicht Parsen. Es gibt die unterschiedlichsten Formatierungsmöglichkeiten für Gleitkommaausgaben z.B. "F1" - "F4", "G" - "G3", "E" - "F3", "0.000" etc.


string fmt = "F3";
((double)5.5).ToString(fmt);

Ich könnte nun alle via RegEx prüfen, wollte ich aber nicht unbedingt.

Grüße Turmoil

16.828 Beiträge seit 2008
vor 6 Jahren

Dafür sind die Parse (in einem Try-Catch) bzw. TryParse Methoden da.
Siehe auch die MSDN Beispiele bei der Dokumentation der Methode.

T
2.222 Beiträge seit 2008
vor 6 Jahren

Es geht ihm nicht darum einen String in einen bestimmten Typ umzuwandeln.
Es geht ihm darum ob der String für einen bestimmten Datentypen als Format String sein soll.

Z.B. ob der String mit Wert "f3" als Format für ein Dezimalwert sein soll.
Warum er dies ermitteln will ist mir nicht klar, da fehlt der Kontext dazu.

Einen einfachen Weg dafür gibt es nicht.
Hier müsstest du eine Methode bauen, die dies ermittelt und dann ein Objekt liefert, welches über entsprechende Properties die Informationen zum benötigen Datentypen enthält.
Also ein Result Objekt mit z.B. IsFloatFormat, IsDateTimeFormat als boolean.

Aber hier wäre der Kontext hilfreich um ggf. einen sinnvolleren Ansatz zubekommen.
Den aktuell erschließt sich mir nicht warum man dies nutzen sollte.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

T
Turmoil Themenstarter:in
60 Beiträge seit 2008
vor 6 Jahren

Hallo,

ich habe eine Textbox und eine Binding, beides überschrieben.

Wenn in der Bindingklasse der Formatstring für einen Geitkommawert ist, will ich das Dezimatrennzeichen in der Textbox zulassen, wenn der Formatstring in der Bindingklassen für einen Integer ist, dann nicht usw.

Danke erst mal für eure Vorschläge.

Gruß Turmoil

49.485 Beiträge seit 2005
vor 6 Jahren

Hallo Turmoil,

da es auch Formatstrings für benutzerdefinierte Typen (Klassen/Objekte) gibt, gibt es keine Möglichkeit, einem Formatstring im Allgemeinen anzusehen, für welche Typen er geeignet ist, geeignet sein könnte oder zukünftig geeignet sein wird.

Wenn es dir jedoch nur um die Unterscheidung zwischen Geitkomma- oder ganze Zahl geht, dann musst du eben selbst eine Methode schreiben, die auf alle erlaubten Formate testet. Für die standardmäßigen Zahlenformatzeichenfolgen ist das relativ überschaubar. Für benutzerdefinierte Zahlenformatzeichenfolgen ist es schwierig, wenn du sicherstellen willst, dass das Format in sich konsistent und stimmig ist; oder ganz leicht, wenn du nur auf das Vorhandensein eines (nicht escapted) Dezimaltrennzeichens (also '.') testest.

herbivore

T
Turmoil Themenstarter:in
60 Beiträge seit 2008
vor 6 Jahren

Hallo,

ich dachte mir das schon, danke für eure Anregungen...
und ein schönes Wochenende.

Grüße Turmoil