Hallo,
ich bin momentan dabei einen kleinen Bot zu schreiben, der in einem Chatprogramm auf gewisse Commands reagiert und antwortet. Die Antwort wird je nach Command über einen TextFile vorgegeben, ist aber mit Variablen versehen, sodass die Antwort je nach Verfasser der Nachricht oder je nachdem der wie vielte Aufruf das ist (beispielsweise) anders aussieht. Nun ist es so, dass ich den Antwort String habe z.B "Der Command '!ping' wurde schon $count Mal ausgeführt.
Nun möchte ich $count ersetzen durch die entsprechende Anzahl, die ich als Klassenvariable mitführe in der Methode und zuvor von der Datenbank abgefragt habe.
Nun gibt es bei String die möglichkeit
aufzurufen. Target ist der Teil des Strings der ersetzt werden soll und newpart der neue String der an der Stelle des zu ersetzenden eingefügt werden soll.
Die Aufrufzahlen des Commands sind unter der extra Klasse Variablen gespeichert. Ich schreibe nun immer in die Konsole wenn diese Variable in besagter Klasse hineingeschrieben wird (set-methode) und auch wenn sie abgefragt wird, welchen Wert sie hat. Es kommt immer ein aktueller Wert raus. Beim einsetzen jedoch wird aus diesem Wert immer "0".
Durch die vorherigen Ausgaben hab ich aber sichergestellt, dass es nicht 0 sein kann. Gespeichert wird der Wert direkt als String in Variable, sodass die Umwandlung von int zu String schon bereits stattgefunden hat. Hier nun der Code der beim ersetzen auffällt:
countString gibt wie zuvor auch die richtige Anzahl an.
Lasse ich nun jedoch out ausgeben:
Wird um im Beispiel zu bleiben "Der Command '!ping' wurde schon 0 Mal ausgeführt"
Also eine falsche Anzahl denn selbst der SystemOutput vor dem replace war nicht 0 sondern größer.
Hab ich möglicherweise wirklich einen sensiblen Punkt von Java getroffen? Andererseits denke ich, dass das ersetzen hier schon zu Grundlagen gehören sollte, weshalb ich mir nicht vorstellen kann dass da nen Fehler vorliegt..
ich bin momentan dabei einen kleinen Bot zu schreiben, der in einem Chatprogramm auf gewisse Commands reagiert und antwortet. Die Antwort wird je nach Command über einen TextFile vorgegeben, ist aber mit Variablen versehen, sodass die Antwort je nach Verfasser der Nachricht oder je nachdem der wie vielte Aufruf das ist (beispielsweise) anders aussieht. Nun ist es so, dass ich den Antwort String habe z.B "Der Command '!ping' wurde schon $count Mal ausgeführt.
Nun möchte ich $count ersetzen durch die entsprechende Anzahl, die ich als Klassenvariable mitführe in der Methode und zuvor von der Datenbank abgefragt habe.
Nun gibt es bei String die möglichkeit
Code:
string.replace(target, newpart)
Die Aufrufzahlen des Commands sind unter der extra Klasse Variablen gespeichert. Ich schreibe nun immer in die Konsole wenn diese Variable in besagter Klasse hineingeschrieben wird (set-methode) und auch wenn sie abgefragt wird, welchen Wert sie hat. Es kommt immer ein aktueller Wert raus. Beim einsetzen jedoch wird aus diesem Wert immer "0".
Durch die vorherigen Ausgaben hab ich aber sichergestellt, dass es nicht 0 sein kann. Gespeichert wird der Wert direkt als String in Variable, sodass die Umwandlung von int zu String schon bereits stattgefunden hat. Hier nun der Code der beim ersetzen auffällt:
Java:
String countString = variabels.getCount();
System.out.println("Ersetze $count mit " + countString);
out = out.replace("$count", countString);
countString gibt wie zuvor auch die richtige Anzahl an.
Lasse ich nun jedoch out ausgeben:
Java:
System.out.println("Momentane Antwort: " + out);
Also eine falsche Anzahl denn selbst der SystemOutput vor dem replace war nicht 0 sondern größer.
Hab ich möglicherweise wirklich einen sensiblen Punkt von Java getroffen? Andererseits denke ich, dass das ersetzen hier schon zu Grundlagen gehören sollte, weshalb ich mir nicht vorstellen kann dass da nen Fehler vorliegt..