2010-04-26 9 views
25

Welche regulären Ausdruck java verwendet werden könnte, Striche, um herauszufiltern ‚-‘ und öffnen schließen runden Klammern aus einer Zeichenfolge, die Telefonnummern ...Remove Strich von einer Telefonnummer

so dass (234) 887-9999 sollte 2348879999 geben und 234-887-9999 sollte ähnlich 2348879999.

danken,

Antwort

57
phoneNumber.replaceAll("[\\s\\-()]", ""); 

Die regulären Ausdruck aus jedem Leerzeichen eine Zeichenklasse definiert (\s, die als 0 ist entkommenweil wir einen String übergeben), ein Bindestrich (Escape-Zeichen, da ein Bindestrich etwas Besonderes im Zusammenhang mit Zeichenklassen bedeutet) und Klammern.

Siehe String.replaceAll(String, String).

EDIT

Per gunslinger47:

phoneNumber.replaceAll("\\D", ""); 

Ersetzt eine beliebige Nicht-Ziffer mit einem leeren String.

+12

Vielleicht am besten gehen Sie einfach für "" \\ D "'. Es spricht die ursprüngliche Absicht direkter. "Entferne alles, was keine Ziffer ist." – Gunslinger47

+0

Beide der oben genannten funktioniert in meinem Fall ... weil ich den Benutzer beschränken, nur Ziffern, runde Klammern und Bindestriche eingeben ... Vielen Dank Jungs :) –

+1

@Gunslinger - das ist ein guter Punkt. Ich werde meine Lösung bearbeiten. –

4
public static String getMeMyNumber(String number, String countryCode) 
    {  
     String out = number.replaceAll("[^0-9\\+]", "")  //remove all the non numbers (brackets dashes spaces etc.) except the + signs 
         .replaceAll("(^[1-9].+)", countryCode+"$1")   //if the number is starting with no zero and +, its a local number. prepend cc 
         .replaceAll("(.)(\\++)(.)", "$1$3")   //if there are left out +'s in the middle by mistake, remove them 
         .replaceAll("(^0{2}|^\\+)(.+)", "$2")  //make 00XXX... numbers and +XXXXX.. numbers into XXXX... 
         .replaceAll("^0([1-9])", countryCode+"$1");   //make 0XXXXXXX numbers into CCXXXXXXXX numbers 
     return out; 

    }