# String zerlegen und auf mehreren Variablen zuweisen



## Nicky (24. Okt 2004)

Hallo Java Gemeinde, 

Das ist sicherlich ein Anfänger Problem.
Also ich lese den Inhalt einer Tabelle zeilenweise aus (in while Schleife) und der Inhalt wird immer auf einen String 'inhalt' gespeichert.

z.B.: inhalt = ("6, 'Niklas', 'van Tran', '28.02.1974'); 

Nun möchte ich den String 'inhalt' zerlegen und auf 4 String Variablen aufteilen z.b:

str_id = "6";
str_name="Niklas";
str_nachname =" van Tran",
str_gebdat = 28.02.1974

Habe es mit StringTokenizer versucht....Bsp:

```
token = new StringTokenizer(inhalt);
           int i=0;
            while(token.hasMoreTokens()){         	
            	System.out.println(token.nextToken());	
            }
```


...da wird der String zwar zerlegt aber ich kann den Inhalt nicht auf 4 Variablen speichern.

Kann mir auch vorstellen den Inhalt in einen String[] Array zu speichern (Aber wie?) und dann beim Arry durchlauf auf die o.g. Variablen zu verteilen.

Wie koennte man das sonst noch lösen?

Für jede Hilfe bin ich dankbar und Sorry falls das Thema schon mal geklärt wurde.

- Nicky


----------



## Beni (24. Okt 2004)

Das ist ganz einfach:

```
token = new StringTokenizer(inhalt);
int length = token.countTokens();  // Anzahl Teile, die gefunden werden.
String[] array = new String[ length ];  // Den Array herstellen
for( int i = 0; i < length; i++ )
  array[i] = token.nextToken();  // Die einzelnen Teile abspeichern.
```


----------



## Nicky (24. Okt 2004)

@Beni:

Danke für die schnelle Info!

gruss, Nicky


----------



## 0xdeadbeef (24. Okt 2004)

Wie wäre es denn mit der syntaktisch einfacheren Lösung?


```
String array[] = inhalt.split("\\s");
```

Jetzt mal vorausgesetzt, daß Inhalt ungefähr so aussieht:


```
String inhalt = "6 Niklas van_Tran 28.02.1974";
```

Falls, wie im ursprünglichen Beispiel angedeutet, auch die einzelnen Bestandteile Spaces enthalten ("van Tran"), dann kann man Space nicht als Trennzeichen einsetzen. Ergo muß auch der StringTokenizer in der Standardeinstellung scheitern, denn der verwendet ebenfalls nur Whitespaces als Trennzeichen.

Sieht der String ungefähr so aus?

```
String inhalt = "6, Niklas, van Tran, 28.02.1974";
```

Dann würde ich das Komma als Trennzeichen nehmen und die Spaces dann in einem zweiten Durchlauf mit "trim" eliminieren:


```
String array[] = inhalt.split(",");
for (int i=0; i<array.length; i++)
    array[i].trim();
```


----------

