2016-05-07 10 views
0

Ich möchte eine Reihe von Form spalten:Aufteilen eine Zeichenfolge in eine Liste von ganzen Zahlen in Java

" 42 2152 12 3095 2" 

in eine Liste von ganzen Zahlen, aber wenn ich die .split(" ") Funktion verwende ich mit einem leeren "" Elemente am Ende am Anfang wegen der Leerzeichen am Anfang. Gibt es eine Möglichkeit, dies ohne das leere Element zu teilen?

+1

verwendet s.trim(). Split ("") –

Antwort

2

Verwenden Sie die String.trim() Funktion zu entfernen, bevor Sie Split auf dem Array aufrufen. Damit entfernen Sie alle weißen Räume vor und nach dem ursprünglichen Zeichenfolge

Zum Beispiel:

String original = " 42 2152 12 3095 2"; 
    String[] array = original.trim().split(" "); 

If:

String original = " 42 2152 12 3095 2"; 
    original = original.trim(); 
    String[] array = original.split(" "); 

Um Ihren Code ordentlicheres zu machen, könnte man es auch als schreiben Wir drucken das Array aus:

for (String s : array) { 
     System.out.println(s); 
    } 

Der Ausgang ist:

42 
2152 
12 
3095 
2 

Hoffe, dass dies hilft.

2

können Sie String.trim verwenden führende und nachfolgende Leerzeichen aus der ursprünglichen Zeichenfolge

String withNoSpace = " 42 2152 12 3095 2".trim(); 
1

können Sie verwenden Scanner, es wird eine ganze Zahl in einer Zeit von String lesen

Scanner scanner = new Scanner(number); 
List<Integer> list = new ArrayList<Integer>(); 
while (scanner.hasNextInt()) { 
    list.add(scanner.nextInt()); 
} 
+0

Danke für die schnelle Antwort! Wäre diese Methode schneller als die trim + split-Methode? –

+0

@ J.Doe Ich denke, sie haben alle die gleiche Leistung. – Nirupa

1

Gemäß oben Antworten und Sie fordern von der Performance-Unterschied zwischen all diesen Methoden:

Es gibt keine wirkliche Leistungsunterschied alle diese würden mit O (n) laufen.

Tatsächlich teilen die Strings zuerst wie, und dann zu einer Sammlung hinzufügen wird 2 x O (n) Schleifen enthalten.