2010-04-26 4 views
25

Что регулярного выражение с помощью Java может быть использована для фильтрации тира «-» и открыть близкие круглые скобки из строки, представляющие номера телефонов ...Удалить тир с номером телефона

так, что (234) 887-9999 должен дать 2348879999 и точно так же 234-887-9999 должны дать 2348879999.

Спасибо,

ответ

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

регулярное выражение определяет класс символов, состоящий из любого символа пробела (\s, который спасся, как \\s, потому что мы передаем строку), тире (экранировано, потому что тире означает что-то особенное в контексте классов символов) и круглые скобки.

См. String.replaceAll(String, String).

EDIT

gunslinger47 Per:

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

Заменяет любой нецифры с пустой строкой.

+12

Возможно, лучше всего перейти на '' \\ D "'. Это говорит о первоначальном намерении более непосредственно. «Удалите все, что не цифра». – Gunslinger47

+0

Обе эти работы работают в моем случае ... потому что я ограничиваю пользователя вводить только цифры, круглые скобки и тире ... Большое спасибо ребятам :) –

+1

@Gunslinger - это хороший момент. Я отредактирую свое решение. –

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; 

    } 
Смежные вопросы