# String nach Länge trennen



## lensi (24. Feb 2010)

Hallo,
ich  habe ein  kleines Problem  und komme nicht mehr weiter.
Ich  habe eine String z.b.
String value ="nfrejwqhrjhwkqöfndsnafjkbansfbhadfzuweqrzqrabfbsmnafbpwiqu5z431275355jk354bn6mb45365365464";
Diesen  String schreibe ich  mir  in  eine txt  Datei auf dem lokalen  Verzeichnis.
Ich hätte aber  gerne das der String in  der Text Datei  nach einer bestimmt Anzahl  von  Zeichen   ( in  diesem Fall  alle 20  zeichen) getrennt  wird ,also sollte dann in  der Textdatei stehen:

nfrejwqhrjhwkqöfndsn
afjkbansfbhadfzuweqr
zqrabfbsmnafbpwiqu5
z431275355jk354bn6m
b45365365464

Die String Length  ist  Variable , also  es  nicht immer 200  Zeichen , es  können  mehr oder wenig  sein.
Wichtig , ich  will  ihn  nicht anhand  eines  bestimmten Zeichen  Trennen, mir geht es um  die Länge und der String muß  noch  in  einen  Textdatei  geschrieben  werden !!!!

Kann mir jemand weiter  helfen ???

MFG Lensi


----------



## SlaterB (24. Feb 2010)

substring(index,index)?


----------



## lensi (24. Feb 2010)

ja mit substring(0,20)  funktioniert, richtig.
Da  gibt esnur ein Problem er  trennt  den Value  beim 20  Zeichen und der Rest wird abgeschnitten
Heißt:

```
String value ="nfrejwqhrjhwkqöfndsnafjkbansfbhadfzuweqrzqrabfbsmnafbpwiqu5z431275355jk354bn6mb45365365464";
out.println(value.substring(0,20));
```
= nfrejwqhrjhwkqöfndsn

Ich  böntige  das  in  einer Schleife , aber ich komme nicht richtig auf den  Aufbau  der Schleife.
In  der Schleife müßte man  ein SubString machen und den rest raus schreiben. den Rest  wieder in  die Variable "Value"  schreiben und wieder ein  SubString machen.Oder sehe ich  das  Falsch ???Nur wir  bekommen ich  den rest  von einem Substring?
? gibt es  da vielleicht ne einfacher  Lösung bzw. eine nicht so  umständliche??


----------



## punkt21 (24. Feb 2010)

du kannst dir immer die länge des rests ausgeben lassen, ist dieser größer als 20, machs du das seble nochmal, ansonsten haste halt den letzten string


----------



## lensi (24. Feb 2010)

und wie gebe ich mir die Länge  der Rest  eines  substring  aus ???


----------



## SlaterB (24. Feb 2010)

du kennst doch die ursprüngliche Länge, z.B. 75,
substring(0,20) liefert den Anfang davon, den 75er String hast du immer noch, da dann 20-40, 40-60 usw. abschneiden
-> Schleife

oder wenn du wirklich den Rest willst:
substring(20);
liefert den Rest, also 20-75, Länge 55,
ist vielleicht einfacher in der Bearbeitung, aber erzeugt aufwendig noch mehr Zwischenstrings, eigentlich kannst du als dem ersten alles herausholen


----------



## punkt21 (24. Feb 2010)

hier mal n ansatz:


```
String s = "aasldnfvndnovceinwoifgvnndasivnosvodslfgaodhohoshaofhdoihgodfhgoihdfsoidhfoshfoidhsofhos";
		
		while (s.length() > 20) {
			System.out.println(s.substring(0, 20));
			s = s.substring(20);
		}
		System.out.println(s);
```

Solange s eine Länge > 20 hat, werden die ersten 20 ausgegeben, danach werden die ersten 20 abgeschnitten und von vorn. Ist eine Länge < 20 erreicht, wird der rest ausgegeben


----------



## lensi (24. Feb 2010)

Ich habe  es  jetzt  !!  Vielen Dank  an  alle !!!!

Wenn ihr noch was  zu  verbessern habt , meldet euch


```
int a =0;
int b=40;

	while(value.length() >= b)
	{

		fw.write(value.substring(a,b));
		fw.write(System.getProperty( "line.separator" ));
		a=a+40;
		b=b+40;

	}
	if((value.length()-a) != 0 )
	{
		fw.write(value.substring(a,value.length()));
		fw.write(System.getProperty( "line.separator" ));
	}

	fw.close();
```


----------



## ARadauer (24. Feb 2010)

```
int a =0;
int b=40;
```
Variablen sollte man sinnvolle Namen geben.


----------



## lensi (24. Feb 2010)

Danke  für diesen  Verbesserungsvorschlag.:rtfm: Aber das  weiß ich auch , hab  ich auch schon abgeändert


----------



## punkt21 (24. Feb 2010)

warum benutzt du überhaupt die 2 variablen?


```
while (s.length() > 20) {
    fw.write(s.substring(0, 20));
    fw.write(System.getProperty("line.separator"));
    s = s.substring(20);
}
if(s.length() > 0)
    fw.write(s);
fw.close();
```

20 kannste dann ja an dein intervall anpassen


----------



## lensi (24. Feb 2010)

Ja die  beiden Variablen  nutze  ich ,um  die länge der Zeichen Variable zu machen.Soll  heißen , ich lese mir die Werte für a  und b  aus einer properties Datei , damit  man  es  im nachhinein  nur noch  in  der properties Datei  ändern  muß bzw. kann .
Aber ich kann  mir  Quellcode sparen, wenn  ich  deine Variante nehme! 
Das  mit dem 
	
	
	
	





```
s = s.substring(20);
```
ist  mir nich  eingefallen!!  Danke


----------



## TR (24. Feb 2010)

punkt21 hat gesagt.:


> warum benutzt du überhaupt die 2 variablen?
> 
> 
> ```
> ...



2 int-Variablen sind performanter als jedesmal einen neuen String zu erzeugen! Von daher ist der Ansatz besser als ein 
	
	
	
	





```
s = s.substring(20);
```


----------

