Ich habe Folgendes:
01.05.03
Ich muss das in 1.5.3
konvertierenDas Problem ist, ich kann nicht nur die 0 trimmen, denn wenn ich:
01.05.10
Ich muss das in 1.5.10
konvertierenAlso, was ist der bessere Weg, um dieses Problem zu lösen? Regex? Wenn ja, ein Regex-Beispiel macht das?
Regex-ersetzen
%Vor%mit der leeren Zeichenfolge. Die Regex ist:
%Vor%† Beachten Sie, dass nicht alle Regex-Varianten Lookbacks mit variabler Länge unterstützen, .NET jedoch.
Wenn Sie diese Art von Eingabe erwarten: "00.03.03"
und möchten in diesem Fall die führende Null beibehalten (wie "0.3.3"
), verwenden Sie stattdessen diesen Ausdruck:
und erneut durch die leere Zeichenfolge ersetzen.
Aus den Kommentaren (danke Kobi): Es gibt einen prägnanteren Ausdruck, der kein Zurückschauen erfordert und meinem zweiten Vorschlag entspricht:
%Vor%was ist
%Vor% Dies funktioniert, weil das 0
zufällig ein Wortzeichen ist, so dass Wortgrenzen verwendet werden können, um das erste 0
in einer Zeile zu finden. Es ist ein kompatibler Ausdruck, da viele Regex-Flavors Lookbacks mit variabler Länge nicht unterstützen und einige (wie JavaScript) überhaupt keinen Lookback.
Sie könnten die Zeichenkette in .
aufteilen und dann die Datei trimmen Führe 0
s in die Ergebnisse der Aufteilung ein und füge sie dann wieder zusammen.
Ich kenne keine Möglichkeit, dies in einer einzigen Operation zu tun, aber Sie könnten eine Funktion schreiben, die dies verbirgt und wie eine einzelne Operation aussieht . ;)
UPDATE:
Ich habe nicht einmal an die Regex des anderen Mannes gedacht. Ja, das wird es wahrscheinlich in einer einzigen Operation tun.
Hier ist ein anderer Weg, wie Sie das tun können, was FrustratedWithFormsDesigner vorschlägt:
%Vor%Dies ist fast das gleiche wie die Antwort von dtb, erfordert aber nicht, dass die Teilstrings gültige ganze Zahlen sind (es würde auch mit zB "000A.007.0HHIMARK" funktionieren).
UPDATE : Wenn Sie möchten, dass alle Zeichenfolgen, die aus allen 0 in der Eingabezeichenfolge bestehen, als eine einzige 0 ausgegeben werden, können Sie Folgendes verwenden:
%Vor%Beispiel Eingabe / Ausgabe:
%Vor%Es gibt auch die Old-School-Art, die wahrscheinlich bessere Leistungsmerkmale hat als die meisten anderen erwähnten Lösungen. Etwas wie:
%Vor%HINWEIS: Sie müssen gründlich nach einer möglichen Eingabekombination suchen.
Es sieht so aus, als wäre es ein Datumsformat, wenn ich den Code für die Datumsverarbeitung verwenden würde
%Vor%oder noch besser
%Vor%was Sie und die Kultur Ihrer Kunden respektiert.
Wenn diese Daten kein Datum sind, verwenden Sie das nicht:)
Ich hatte eine ähnliche Anforderung, um eine Zeichenfolge mit Straßenadressen zu analysieren, wo einige der Hausnummern führende Nullen hatten und ich sie entfernen musste, während der Rest des Textes intakt blieb, so dass ich die akzeptierte Antwort leicht editierte Anforderungen, vielleicht findet jemand es nützlich. Grundsätzlich dasselbe wie angenommene Antwort, mit dem Unterschied, dass ich überprüfe, ob der String-Teil als Integer analysiert werden kann, und den String-Wert, wenn false angegeben ist;
%Vor%Eingabe: "Islands Brygge 34 B 07 TV"
Ausgabe: "Islands Brygge 34 B 7 TV"