Ich bin mir nicht sicher, wie dies in C # richtig geparst werden kann, aber ich möchte, dass es in dem Fall fehlschlägt, in dem das Komma nicht bei jedem wiederholbaren dreifachen Wert getrennt ist. Beispiel: 1.123.23 sollte passen, aber 11.23.23 sollte in meinem Sinne scheitern. Aber die tatsächliche Ausgabe ist, dass tryparse immer wahr zurückgibt, unabhängig davon, wo die Komma-Position vor dem Komma liegt.
Bearbeiten: Antwort mit Regex wird akzeptiert, da es sich um einen Fehler handelt. Danke.
%Vor% Wie Sie festgestellt haben, erzwingt NumberStyles.AllowThousands
das Komma nicht am richtigen Ort. Also ich denke ein regulärer Ausdruck kann dir hier helfen:
Ich habe ein paar verschiedene Codes ausgeführt und festgestellt, dass wenn Sie AllowThousands anwenden, die einzige Einschränkung für die Stelle von "," ist, dass sie auf dem ganzzahligen Teil der Zahl stehen sollte.
einige Ergebnisse:
Sie haben zwei akzeptable Formate, so dass Sie überprüfen können, ob die Zahl analysierbar ist, und wenn dies der Fall ist, prüfen Sie, ob es sich um ein akzeptables Format handelt:
%Vor%Was Sie entdeckt haben, ist eindeutig ein Fehler. Ich empfehle dringend, hier nicht stecken, stattdessen implementieren Sie einen Workaround. (und auch KISS anwenden).
Wenn dieser Code-Teil nicht zig-mal in einem hohen mathematischen Algorithmus ausgeführt wird oder auf andere Weise leistungskritisch ist, ist hier eine einfache Problemumgehung.
(Angenommen, die Strings verwenden ',' (Komma) als Tausendertrennzeichen. (Und sie sind kein Dezimaltrennzeichen, wie es eine Kultur sein könnte)):
%Vor%Tags und Links c#