2014-02-09 74 views
0

我使用的是正則表達式,並且一直在使用教程,但是我經常使用正則表達式,但有時並不總是這樣。我將我的號碼從我的android手機的聯繫人列表中刪除。我試圖擺脫所有空間, '(', ')',以及 ' - 'Android正則表達式 - 替換所有空格'('')'''''

例如:

1. (555) 867-5309 -> 5558675309 
2. 1555-555-5555 -> 15555555555 
3. 555-555-5555 -> 5555555555 

這是我使用

String formatphone = contactPhone.replaceAll("\\s()-",""); 

行對於某些數字,它只返回數字,有時它不會更改格式。

它是正確的嗎?我是否需要格式化某些內容,因爲我正在將它從電話的聯繫人列表中刪除?

回答

1

把所需的字符一個字符類:

String formatphone = contactPhone.replaceAll("[()-]",""); 

確保你把連字符-在兩端。

+0

那麼把所有人物放入角色班級和我做到這一點之間有什麼區別? –

+0

@ user2252502您做到這一點的方式使它成爲一個單一的_string_被替換。這樣你就可以用替換函數替換類中的任何字符。 – devnull

0

嘗試使用這樣的:

String formatphone = contactPhone.replaceAll("^.*[\\s\\(\\)-].*", ""); 

當你定義使用[]一組正則表達式。在那個集合中你包含了你想要替換的任何字符。由於()是特殊含義的字符,你必須逃避它們。由於-是一個用來設計範圍的特殊字符,它必須是你的設定的最後一個字符,所以如果沒有任何字符在後面,它不是一個範圍,但只是該字符(儘管你可以逃避它)。