Hi, wie bekomme ich denn aus einem String ein ETX (03) und STX (02) raus. Ein if(derString.contains("\03")) ... funktioniert ja, aber austauschen lässt sich das nicht ... auf die Schnelle ;-) Eumel2
Robert L. schrieb: > derString.replaceAll("alt", "neu") Wobei ein String immer immutable ist. Man muss dann also schon den neuen Rückgabestring seiner Variablen zuweisen. Ausserdem sollte man beachten, das der erste Parameter eine Regular Expression ist.
Eumel2 schrieb: > aber austauschen > lässt sich das nicht
1 | String neuerString = derString.replace('\3', 'a') |
(dank GC) kann man ja (bedenkenlos) derString = derString.replace('\3', 'a') oder ?
Robert L. schrieb: > kann man ja (bedenkenlos) > > derString = derString.replace('\3', 'a') > > oder ? Man kann nicht nur man muss sogar wenn die Werte in dem 'selben' String geändert werden sollen. Suche nach "String" und "immutable" im Java Buch deines Vertrauens. Das sind elementarste Grundlagen in der Stringverarbeitung in Java.
Moin, vielen Dank für Eure Antworten. Alles richtig und ich war heute morgen wohl noch zu müde ;-) Noch eine Frage: da ein String ja final ist, wird mittels derString = derString.replace('\3', 'a') ja ein neues Object (mit identischen Namen) angelegt. Das alte wird wohl irgendwann vom GC erlegt. Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor. Unter Umständen stört dann irgendwann der GC meine periodische Messwerterfassung. Das muss doch eleganter gehen - oder? Eumel2
Eumel2 schrieb: > ja ein neues Object (mit identischen Namen) angelegt Nein, Objekt != Referenz. Ein Objekt hat keinen Namen. Die Referenz mit dem Namen derString wird das neue Objekt zugewiesen. Das alte wird möglicherweise von der GC gelöscht falls es nirgends mehr referenziert wird. Eumel2 schrieb: > Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor > Unter Umständen stört dann irgendwann der GC meine periodische > Messwerterfassung Auf einem 386er mit 2MB RAM sicherlich... Eumel2 schrieb: > Das muss doch eleganter gehen Was ist daran "unelegant"? Es hält dich natürlich niemand ab die ganze Stringverarbeitung selbst auf einem chararray durchzuführen falls du das "eleganter" findest...
Eumel2 schrieb: > Noch eine Frage: da ein String ja final ist, wird mittels > > derString = derString.replace('\3', 'a') > > ja ein neues Object (mit identischen Namen) angelegt. Das alte wird wohl > irgendwann vom GC erlegt. So wird wohl enden. Eumel2 schrieb: > Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor. Unter > Umständen stört dann irgendwann der GC meine periodische > Messwerterfassung. Das muss doch eleganter gehen - oder? Es gibt auch die Klasse StringBuffer Manche nehmen auch einfach ein char[xxx]. Nachtrag Ooops Läubi hat natürlich recht. Es wird kein Objekt identischen Namens angelegt, sondern einfach ein neuer String mit dem geänderten Inhalt und "derString" zeigt auf dieses neue Objekt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.