Regulärer Ausdruck

Sebastian29

Erfahrenes Mitglied
Hi an alle!

Die Telefonnummer sieht folgendes aus: + 49 (0) 8467/999-001

Und ich möchte mit dem regulären Ausdruck als Ergebnis ausgeben: 08467/999-001

Gruß
Sebastian
 
Reguläre Ausdrücke erstellen gar nichts, das sind Filter, nicht mehr und nicht weniger. Was Du willst nennt man parsen und dort kann man RegExp zur Hilfe nehmen.

Ohne Dir jetzt einen konkreten Algorithmus zu schreiben:

Die führenden Zeichen \+*[\s\040]49
Nicht-Zahlen: \D

Das sollte reichen um den Algorithmus schreiben zu können.
 
Hi Navy!

Hm, ich stelle eben fest, dass dein Tipp für den Algorithmus nicht ganz sauber ist oder ich habe das vielleicht nicht ganz verstanden.

Also, zu deinem Tipp habe ich folgendes geschrieben:

Code:
		Pattern p = Pattern.compile("\\+*[\\s\\040]49\\D");
		Matcher m = p.matcher( faTelefonNr );
		if( m.find() )
		{
	              System.out.println( faTelefonNr.substring(m.end()) ); <-- "(0) 8467/999-001"
	              System.out.println( m.group(0) );  <-- "+ 49 "
                }

Bei der 1. Ausgabe "(0) 8467/999-001" möchte ich aber, dass "(0) " auch weg muss und manuell die 0 vor der Vorwahl setzen. Die Lösung von mir sieht folgendes aus:

Code:
		Pattern p = Pattern.compile("\\+*[\\s\\040]49\\D\\((.*)\\)\\D");
		Matcher m = p.matcher( faTelefonNr );
		if( m.find() )
			System.out.println( "0" + faTelefonNr.substring(m.end()) );

                Ausgabe: "08467/999-001"

Zu meiner Lösung scheint genau richtig, was ich wollte oder siehst du dort einen Fehler?

Gruß
Sebastian
 
> Hm, ich stelle eben fest, dass dein Tipp für den Algorithmus nicht ganz sauber ist oder > ich habe das vielleicht nicht ganz verstanden.

Ich wollte Dir den RegExp nicht schreiben, sondern nur einen Hinweis geben. Den Rest hast Du ja dann alleine geschafft. Der Lernerfolg ist da :)


> \+*[\s\040]49\D\((.*)\)\D

Is so OK, heißt jedoch, daß das Schema Deiner Ursprungstelefonnummern sich nicht ändert, bzw ändern darf.
 
Zurück