C# String in Int mit Anfangs nullen?
Hallo,
ich bekomme einen String ( "02345" ).
Wenn ich den Wert mittels TryParse Konvertiere in ein Int wird mir die anfangs Null gestrichen.
Wie kann ich diese mit Konvertieren ?
9 Antworten
Das es Mathematisch keinen sinn macht ist mir klar.
Es gibt aber gefüllt 3 Milliarden fällen wo es mit kommen sollte.
In meinem Falle ist es eine Nummer fürs SAP.
Dann ist dein Datentyp falsch und du willst niemals einen Int haben, sondern solltest bei String bleiben. Oder in deinem Konzept stimmt irgendwas nicht, falls du mit einer SAP-Nummer irgendwas direkt berechnen willst.
Postleitzahlen und Telefonnummern zum Beispiel sind im allgemeinen Sprachgebrauch Zahlen, sollten aber im Computer niemals als Zahlen gespeichert werden - weil man dann eine eventuelle führende Null immer absichtlich wegschmeißt. Postleitzahlen und Telefonnummern sind Strings.
Ja, aber eben, deutsche Postleitzahlen sind per Definition für einen Programmierer keine Zahlen...
Ein Integer ist nun einmal eine Ganzzahl, die Werte abspeichert. Führende Nullen haben da eben keinerlei Bedeutung bzw. existieren schlicht nicht. Was du dann hast ist eben ein String, da brauchst du dann nix konvertieren.
Alternativ speicherst du die Datei als Integer ab und tust sie bei der Verwendung wieder mit führenden Nullen aufgefüllt verwerden, sofern die Anzahl der Zeichen immer identisch ist.
aufgefüllt verwerden = auffüllen, keine Ahnung was ich manchmal schreibe. Bin definitiv nicht multitaskingfähig.
Wie soll die bitte da bleiben? Währe da ein Komma währe das anders, aber das macht Mathematisch kein Sinn das da ne 0 steht.
In der Mathematik ist es "nur" üblich, das führende Nullen weggelassen werden, aber keine festgelegt Regel. Da Sie aber keinen Wert hat, macht es speichertechnisch ja keinen Sinn, diese zu speichern... braucht nur Platz für nichts.
Das es Mathematisch keinen sinn macht ist mir klar.
Es gibt aber gefüllt 3 Milliarden fällen wo es mit kommen sollte.
In meinem Falle ist es eine Nummer fürs SAP.
Aber trozdem vielen Dank für dein Bemühen
Da ein Compiler die Mathematischenregeln beachtet, wird das dieser niemals machen. Hab kein Plan was mit SAP gemeint ist. Aber wenn du zahlen vergleichen willst dann nehme zwei Strings. Währe da nur eine 0 würde der Compiler die akzeptieren.
Führende Nullen sind immer String.
Die Frage ist, ob SAP dies als Nummer speichert (int) und einfach mit führenden Nullen formatiert anzeigt (das merkst du beim Zugriff) oder ob die Nummer als String gespeichert ist.
Da du auf SAP zuzugreifen scheinst, wird es irgendwo eine Dokumentation geben, wo das steht. Wenn du einfach in deinem eigenen System eine Nummer vom SAP Systemspeichern möchtest, dann solltest du auch zuerst herausfinden, wie die Nummer in SAP verwendet wird. Mit ein wenig Pech ist es als String definiert und enthält plötzlich Buchstaben - und dann kannst du deinen INT vernichten.
Int ist eine Zahl, aus mathematischer Sicht haben führende Nullen keine Bedeutung.
Genau das stellen die Zahlen-Typen in C# dar, das ist auch bei jeder anderen Sprache so.
Wenn Du unbedingt führende Nullen haben willst, dann brauchst Du einen String.
Das wird auch recht oft gemacht, ich sehe immer wieder Ids als Strings, auch wenn sie nur Ziffern enthalten, aber durch den String hat man mehr Möglichkeiten.
Eine Postleitzahl ist nie eine Zahl, denn nur wenige Länder haben wirklich eine Zahl - hier in der Schweiz z.B.
Aber Deutschland hat führende Nullen, England hat Buchstaben usw. :) Ist aber ein häufiger Datemodellierungs-Anfängerfehler.