# String kürzen auf bestimmte Länge



## snoop83 (3. Mai 2005)

Ich glaub ich bin zu dumm für Java 

Ich lese einen String aus einem jTextfield. Dann muss ich diesen auf 80 Zeichen kürzen und weiter verwenden. Habe mich an dieses Beispiel gehalten:

http://www-sst.informatik.tu-cottbus.de/~an/Books/HJP/html/k100072.html#sectlevel3id011002003

Das hab ich nun geschrieben:

```
String s;
            s = jTextFieldChatIn.getText();
            s.substring(0,5);
            System.out.println(s);
            jLabelInfozeile.setText(s);
```

Aber es funktioniert nicht ansatzweise. Woran liegts?


----------



## Roar (3. Mai 2005)

strings sich unveränderlich, substring liefert dir einen neuen string zurück, s bliebt gleich


----------



## snoop83 (3. Mai 2005)

aha .. toll, warum fällt mir das nicht selbst ein 


```
String s, s2;
            s = jTextFieldChatIn.getText();
            s2 = s.substring(0,5);
            System.out.println(s2);
            jLabelInfozeile.setText(s2);
```

geht sicherlich effektiver, aber auf die schnelle funzt es

Danke für die schnelle Antwort !!!!!


----------



## Roar (3. Mai 2005)

ja effektiver, indem du einfach s = s.substring() schriebst..


----------



## Sky (4. Mai 2005)

snoop83 hat gesagt.:
			
		

> aha .. toll, warum fällt mir das nicht selbst ein



Weil Du nicht die API liest...



			
				Die API zu Strings hat gesagt.:
			
		

> Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.





			
				Die API zu String#substring(int beginIndex hat gesagt.:
			
		

> ... Returns:
> the specified substring.


----------



## Matflasch (4. Mai 2005)

Substring kannst du auch direkt an die getText()-Methode anhängen, und danach auch ein Trim() oder davor, je nachdem, wie du es haben willst.

Angenommen jemand schreibt erst ne Menge leerzeichen und dann erst das, was rein sollte, dann hast du die ganzen Leerzeichen am Anfang und den Text, den du eigentlich willst, bekommst du nur zum Teil (also weniger, als möglich wäre).


```
String s = "";
s = jTextFieldChatIn.getText().trim().substring(0,80);
System.out.println(s);
jLabelInfozeile.setText(s);
```

Man könnte es noch weiter treiben:

```
String s = jTextFieldChatIn.getText().trim().substring(0,80);
System.out.println(s);
jLabelInfozeile.setText(s);
```


```
jLabelInfozeile.setText(jTextFieldChatIn.getText().trim().substring(0,80));
```

Will damit nur sagen, dass du sehr viel 'beliebig' weit verschachteln kannst. Die lesbarkeit leidet zwar darunter, wenn man es übertreibt, aber so geht es noch 

Mfg, Matflasch


----------

