2014-05-09 18 views
7

muszę usunąć przestrzenie między liczb, tak że ciąg tak:Regex usunąć spacje pomiędzy liczbami tylko

"Hello 111 222 333 World!" 

staje

"Hello 111222333 World!" 

Próbowałem to:

message = message.replaceAll("[\\d+](\\s+)[\\d+]", ""); 

Wygląda na to, że to się nie udało.

+0

Co to procedura zrobić? – stmfunk

+0

@stmfunk próbuje wyodrębnić numery telefonów poprzez ponowne sformatowanie wszystkich liczb w jednym formacie, a następnie wyodrębnianie ich –

Odpowiedz

16

Można użyć tej lookaround regex oparta:

String repl = "Hello 111 222 333 World!".replaceAll("(?<=\\d) +(?=\\d)", ""); 
//=> Hello 111222333 World! 

ten regex "(?<=\\d) +(?=\\d)" sprawia pewnością pasuje do miejsca, które są poprzedzony oraz zakończony liczbą.

+0

Tak, to również zadziała, myślałem, że obejścia będą wyglądać tak samo jak przechwycone grupy. Ale myślę, że to pytanie nie dotyczy testowania wydajności w obu podejściach, mógłbym zredagować moją odpowiedź, by uwzględnić tę opcję, ale teraz, gdy inna odpowiedź już to obejmuje, odejdę jak jest. – anubhava

+0

Są oczywiście miejsca, w których podejście będzie działać, ale podejście przechwytywania nie może. W każdym razie, moim celem było przede wszystkim to, że występ był (machał rękami) wystarczająco dokładnie w większości celów. –

+2

Ale jak widać tutaj: 'http: // regex101.com/r/zL6yH3', że' 1 2 3' nie może stać się '123' z' (\\ d) (\\ d) ' – anubhava

0

Jak o:

message = "Hello 111 222 333 World!".replaceAll("(\\d)\\s(\\d)", "$1$2"); 

Daje:

"Hello 111222333 World!" 
+3

Co z [Hello 1 2 3 World!] (http://regex101.com/r/tL7hR9) –

Powiązane problemy