Wie kann ich (am schnellsten vorzuziehen) Kommas aus einem Ziffernbereich eines Strings entfernen, ohne den Rest der Kommas im String zu beeinflussen. Im folgenden Beispiel möchte ich die Comas aus den Zahlenabschnitten entfernen, aber das Komma nach dem Hund sollte bleiben (ja, ich weiß, dass das Komma in 1023455 falsch ist, aber nur einen Eckfall da draußen wirft).
Was ich habe:
%Vor%Gewünschtes Ergebnis:
%Vor%Vorgabe: muss in Basis no add on packages erfolgen.
Vielen Dank im Voraus.
BEARBEITEN: Danke Diron, Greg und Dirk. Ihre Antworten haben sehr gut funktioniert. Ich spielte mit etwas, das nah an der Antwort von Jason war, aber ich hatte das Komma in der Klammer. Nun, wenn man es betrachtet, ergibt das noch nicht einmal einen Sinn. Ich habe beide Antworten mit einem Mikrozeichen versehen, da ich hier Geschwindigkeit brauche (Textdaten):
%Vor%+1 an euch alle.
Wenn wir Perl regexp verwenden und uns auf "digit comma digit" konzentrieren, ersetzen wir sie durch nur die Ziffern:
%Vor%Hier sind ein paar Optionen:
%Vor% Sie entsprechen einer Ziffer gefolgt von einem Komma gefolgt von einer Ziffer. Die [0-9]
und \d
(die zusätzliche \
entkommt der zweiten, so dass sie es bis zum regulären Ausdruck schafft) entsprechen einer einzelnen Ziffer.
Der erste Ausdruck erfasst die Ziffer vor dem Komma und die Ziffer hinter dem Komma und verwendet sie in der Ersetzungszeichenfolge. Im Grunde ziehen Sie sie heraus und legen sie zurück (aber nicht das Komma zurück setzen).
Die zweite Version verwendet Übereinstimmungen mit der Länge Null. (?<=\d)
besagt, dass es eine einzelne Ziffer vor dem Komma geben muss, damit es übereinstimmt, aber die Ziffer selbst ist nicht Teil der Übereinstimmung. Der (?=\d)
sagt, dass hinter dem Komma eine Ziffer stehen muss, damit es übereinstimmt, aber es ist nicht in der Übereinstimmung enthalten. Es entspricht also grundsätzlich einem Komma, aber nur wenn eine Ziffer vorangestellt und gefolgt wird. Da nur das Komma abgeglichen wird, ist die Ersetzungszeichenfolge leer und löscht das Komma.