Mustererkennungsproblem in C #

8

Ich habe eine Zeichenfolge wie "AAA 101 B202 C 303" und ich möchte den Abstand zwischen Zeichen und Nummer loswerden, wenn es welche gibt. Nach der Operation sollte die Zeichenfolge also wie "AAA101 B202 C303" sein. Aber ich bin mir nicht sicher, ob Regex das tun könnte?

Irgendwelche Hilfe? Vielen Dank im Voraus.

    
Mavershang 07.07.2010, 16:46
quelle

4 Antworten

8

Ja, das können Sie mit regulären Ausdrücken tun. Hier ist ein kurzes, aber vollständiges Beispiel:

%Vor%

(Wenn Sie das viel tun, sollten Sie vielleicht einen regulären Ausdruck für das Muster kompilieren.)

\p{L} entspricht einem Unicode-Buchstaben - Sie möchten vielleicht restriktiver sein.

    
Jon Skeet 07.07.2010, 16:54
quelle
1

Sie können etwas wie

tun %Vor%

Und ersetzen durch

%Vor%

Der Ausdruck kann verschärft werden, aber das obige sollte für Ihre Beispieleingabe funktionieren.

Was es tut, ist eine Gruppe mit Buchstaben (erster Satz von Klammern), dann ein optionaler Platz (\ s?) und dann eine Gruppe von Ziffern (\ d +) zu deklarieren. Die Gruppen können bei der Ersetzung verwendet werden, indem auf ihren Index verwiesen wird. Wenn Sie also den Speicherplatz entfernen möchten, ersetzen Sie ihn einfach durch $ 1 $ 2.

    
driis 07.07.2010 16:53
quelle
0

Obwohl es nicht so prägnant wie Regex ist, ist der C # -Code für so etwas ziemlich einfach und sehr schnell:

%Vor%     
StriplingWarrior 07.07.2010 17:08
quelle
0

Nur zum Spaß (weil das Programmieren manchmal Spaß macht): o) Ich benutze LINQ mit Aggregieren :

%Vor%     
Leniel Macaferi 08.07.2010 01:41
quelle

Tags und Links