2016-04-20 11 views
1

Ich habe String wie:Parse unterzeichnet Anzahl von String

"-------5548481818fgh7hf8ghf----fgh54f4578" 

Ich will nicht mit Pattern und Matcher analysieren. Ich habe Code:

string.replaceAll("regex", "")); 

Wie regex machen alle Symbole auszuschließen, außer ein "-" String erhalten wie:

-554848181878544578 
+4

diese simple..what ist, haben Sie versucht, – rock321987

+0

Wie haben Sie von '------- 5548481818fgh7hf8ghf ---- fgh54f4578' auf' -554848181878544578'? – Savior

+0

@Pillar Ich habe den Beitrag aktualisiert – Nox

Antwort

1

Sie können diese neg verwenden tive Look-Ahead-regex:

String s = "-------5548481818fgh7hf8ghf----fgh54f4578"; 

String r = s.replaceAll("(?!^[-+])\\D+", ""); 
//=> -554848181878544578 

(?!^-)\D wird jede nicht-Ziffer außer dem Bindestrich am Anfang ersetzen.

RegEx Demo

+1

enthalten '+' auch – rock321987

+1

Gute Idee, fügte hinzu. Ich bin mir nicht sicher, warum es abgelehnt wurde. – anubhava

+1

Ja, alle drei Antworten ... sieht so aus, als wäre jemand beleidigt – rock321987

0

Dies wird

String Str = new String("-------5548481818fgh7hf8ghf----fgh54f4578-"); 
String tmp = Str.replaceAll("([-+])+|([^\\d])","$1").replaceAll("\\d[+-](\\d|$)",""); 
System.out.println(tmp); 

Ideone Demo

arbeiten
+2

Wer zum Teufel ist downvoting? – rock321987

+0

Fall der Serien-Downvoting denke ich – anubhava

0

Alternative: Besorgen das Gegenteil statt, die negativen zu ersetzen. Es scheint willkürlich, dass Sie gewählt haben, um Zeichen, die Sie nicht wollen, zu entfernen, anstatt die Zeichen, die Sie tun wollen wollen. Beispiel in javascript:

s = "-------5548481818fgh7hf8ghf----fgh54f4578" 
s = '-' + s.match(/[0-9]+/g).join('') 
// "-554848181878544578"