# Java: split und trim



## Lars11 (11. Mrz 2010)

Hallo zusammen,

1) Mittels der Methode split lässt sich ja ein String durch eine Regexp in mehrere Elemente aufteilen.
Nun möchte ich einen String bei einem Tab teilen, also split("\t")
Wende ich diese Methode jedoch bspw. auf den String "\t\t\t" an (3 TABs), so ergibt sich nicht ein String Array, das aus 4 leeren Strings besteht, sondern ein Array mit der Länge 0. Wie bekomme ich es hin, dass hier ein Array mit der Länge 4 zustande kommt?

2) Wie kann ich trim so modifizieren, dass "\t" s nicht entfernt werden? Oder geht es mit einer anderen Methode?


----------



## nrg (11. Mrz 2010)

.split() kann die delims nicht zurückgeben. das kann imho nur StringTokenizer
StringTokenizer (Java Platform SE 6)

edit:
zur Ergänzung:

```
StringTokenizer stok = new StringTokenizer("\t\t\t", "\t", true);
		while (stok.hasMoreTokens())
			System.out.println(stok.nextToken() + "."); //der "." dient nur dazu, dass man die tabs auch sieht
```


----------



## Lars11 (11. Mrz 2010)

Hallo,

danke für deine Hilfe, doch so war das leider nicht ganz gemeint.
Ich möchte nicht das Trennzeichen Tab zurückgeben, falls nichts zwischen zwei Trennzeichen steht, sondern immer was ZWISCHEN dem Trennzeichen steht.

Für den Fall "\t\t" sollen z.B. drei leere Strings (z.b. im Array) zurückgegeben werden.
Für den Fall "a\t\tb" wird "a", "", und "b" zurückgegeben.

Gruß Lars


----------



## faetzminator (11. Mrz 2010)

[c]split("\\t+")[/c]


----------



## Suinos (12. Mrz 2010)

faetzminator hat gesagt.:
			
		

> ```
> split("\\t+")
> ```


Das erfüllt die Aufgabenstellung nicht.
Soweit ich das sehen kann, geht das mit einem Regex nicht, sondern man muss sich mühsam die token selber zusammensuchen:

```
private static String[] split(String text, final String delimiter)
{
	int index;
	
	java.util.List<String> list = new ArrayList<String>();
	
	// solange wir unser Trennzeichen finden
	while ((index = text.indexOf(delimiter)) != -1)
	{
		String fragment = text.substring(0, index);
		
		text = text.substring(index + delimiter.length());
		
		list.add(fragment);
	}
	
	// letztes Fragment nicht vergessen
	list.add(text);
	
	return list.toArray(new String[0]);
}
```

Tests:

```
String[] array = split("\t\t", "\t");
		
System.out.println(Arrays.toString(array));
```


```
String[] array = split("a\t\tb", "\t");
		
System.out.println(Arrays.toString(array));
```



			
				Lars11 hat gesagt.:
			
		

> 2) Wie kann ich trim so modifizieren, dass "\t" s nicht entfernt werden? Oder geht es mit einer anderen Methode?


Selber eine schreiben!


----------



## faetzminator (12. Mrz 2010)

War wohl schon etwas müde, der TO will ja genau das Gegenteil, als was ich erzählte *säufz*.


----------



## Lars11 (12. Mrz 2010)

Hallo Suinos,

ja genau so hab ichs gemeint. Jetzt läufts einwandfrei.

Vielen Dank für deine Hilfe.


----------

