2017-03-15 2 views
2

Ich habe eine Reihe von Zeichenfolgen (Telefonnummern) und ich muss + entfernen, die vor einem der Elemente (Zahlen) ist, da es eine NumberFormatException wirft, wenn ich versuche, es in int zu werfen.Java - Wie spezielle char in String-Array entfernen?

Die Elemente in der Matrix sind 08888888880888123456+359886001122 und ich habe bereits .split(" ") verwendet, um sie zu trennen. Ich habe auch .split(" +") versucht, um + von der letzten zu entfernen, aber das hat nicht funktioniert.

+0

'split (“ + ")' wird nicht funktionieren, weil '+' ein spezieller Regex Charakter ist, die maskiert werden muss: 'split (" \\ + ")' – shmosel

Antwort

9

Sie haben replaceAll statt split zu verwenden, zum Beispiel:

"0888888888 0888123456 +359886001122".replaceAll("\\+", ""); 

dies zeigt Ihnen:

0888888888 0888123456 359886001122 
//-------------------^------------ 

Dann, wenn Sie jede Zahl teilen möchten Sie split(" ") wie diese verwenden:

Dies gibt Ihnen:

[0888888888, 0888123456, 359886001122] 

EDIT

Oder wie @shmosel sagte in Kommentar Sie replace("+", "")

+0

Oder 'ersetzen Sie einfach (" + "," ")' – shmosel

+2

@shmosel ohne Schrägstrich es wirft einen Fehler "Ausnahme im Thread" main "java.util.regex.PatternSyntaxException: Dangle Metazeichen '+' nahe Index 0' –

+2

[' replace() '] (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace(java.lang.CharSequence,%20java.lang.CharSequence)) verwendet Regex nicht. – shmosel

0

Sie können es ersetzen mit

var lv_numbers = "0888888888 0888123456 +359886001122".replace('+',''); 
0

Split verwendet einen regulären Ausdruck verwenden ca, so können Sie Definieren Sie, dass im Split-Matcher optional '+' enthalten sein soll.

String [] result = "0888888888 0888123456 +359886001122".split("\\s[\\+]{0,1}");