Frage von Trachom, 66

Wie in Java eine StringList ohne ' ' machen?

Hey.. ich bin grade dabei, ein Programm zu schreiben, indem man Sachen eingeben kann und die eingegebenen Sachen in einer StringList zusammengeschrieben werden. Aber wenn ich die Datei dann öffne, ist das eingeschriebene mit ' geschrieben, als beispiel wenn ich "Test" eingegeben habe kommt in der Datei " 'Test' " bei raus. Das stört mich soweit nicht, nur ich kann, wenn ich diese Liste aufrufe, das nicht wieder Löschen. Wie kann ich das umgehen? Ich möchte ein Wort entfernen, welches aber von ' umklammert ist.

Antwort
von androhecker, 36

Was soll eine StringList sein? Diese Klasse gibt es in der Java SE nicht.

Und wie speicherst du das?

Kommentar von Trachom ,

File file = new File("plugins/CommandCreator", "commands.yml");
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);

List  Commands= cfg.getStringList("Commands." + "List");

und hinzufügen mit z.b. Commands.add(string);

speichern mit cfg.saveFile(file);

Kommentar von androhecker ,

Du machst hier so ziemlich alles falsch, was man falsch machen kann... 1. Deine Frage ist sehr ungenau, du redest hier von dem Bukkit YAML Konfigsystem, erwähnst es aber nirgendwo, wie soll man das erraten? 2. Du kannst offensichtlich kein Java, das solltest du lernen bevor du Java Frameworks für Fortgeschrittene nutzt. 3. Bukkit liefert dir eine gute Methode deinen Plugin Config Ordner zu bekommen. 4. Listen nutzen Generics, das solltest du auch. List

wäre hier mehr als angemessen. 5. Variablennamen immer vorne klein. 6. In YAML schreibt man die Keys komplett klein, genauso wie Java Pakete. Die eigentliche Antwort: In YAML werden um Strings Anführungszeichen gemacht, wenn der YAML Parser von Bukkit diese nicht wieder entfernt, stimmt irgendwas mit diesem nicht. Man kann die Anführungszeichen auch entfernen, wie das geht, solltest du wissen. (Einfache Stringverarbeitung mit replace)

Kommentar von androhecker ,

GF ist wirklich schlecht, hinter dem List sollte der Diamantoperator mit String darin stehen, GF hat daraus zwei Zeilenumbrüche gemacht.

Kommentar von Trachom ,

Okay, tut mir Leid, ich wusste nicht, dass das Yaml Konfigsystem von Bukkit ist, dachte das ist von Java, danke für die Info. 

Aber da du ja anscheinend auch ein Bisschen Ahnung von Bukkit hast, kann ich es ja genauer erklären. Ich möchte in einem File eine Liste mit Befehlen haben, die man per Command, Z.b. /command add [command] erweitern und per /command remove [command] verkleinern kann. 


Um [command] in einem String zu kriegen habe ich das so gemacht:

String comd = "";

for (int i = 1; i < args.length; i++) {
comd = comd + args[i] + " ";
}

und dann halt

List<String> list= cfg.getStringList("Commands." + "List");

list.add(comd);

try {
cfg.save(file);
comd = "";
} catch (IOException e) {
e.printStackTrace();
}


Aber leider steht dann in der Datei der Command mit ' :/

Kommentar von androhecker ,

Und? Dann steht da '(Command)', das ist YAML Syntax. Wenn du das Command wieder lädst, ist es auch wieder weg.

Kommentar von Trachom ,

Was meinst du mit 'Wenn du das Command wieder lädst, ...' ?

Kommentar von androhecker ,

YAML verwendet immer ein Anführungszeichen, wie bei Java auch. Wenn du die Liste lädst, ist das Anführungszeichen natürlich nicht mehr dabei. In Java schreibt man auch ...print("Foo"), trotzdem ist das Ergebnis Foo und nicht "Foo".

Kommentar von Trachom ,

Das geht leider nicht so ganz. Wenn ich mir eine Message mit der Stringlist ausgeben lasse, bekomme ich [command, command, command]

Habe die geschweiften Klammern zwar schon entfernt wenn ich mir die Message ausgebe, aber entfernen kann ich trotzdem nichts von der Liste.

Kommentar von androhecker ,

So wird eine Liste ganz normal ausgegeben, wenn du einen einzelnen String haben willst musst du diesen auch einzeln aufrufen. Wenn du ernsthaft Hilfe willst, solltest du das Problem mal richtig beschreiben.

Kommentar von Trachom ,

Wenn ich einen String zur Liste hinzufüge, dann steht da ja 'command' , obwohl ich nur command eingegeben habe. Wenn ich aber command von der Liste löschen will, dann passiert gar nichts.

Kommentar von androhecker ,

Wenn du es nicht schaffst, richtig zu erklären, dann solltest du den ganzen Code schicken. So wird das nichts.

Kommentar von Trachom ,

Ich kapiere nicht, was du daran nicht verstehst. Den Code habe ich übrigens schon geschickt.

Kommentar von androhecker ,

Du verstehst es selber nicht richtig, vermutlich weil du nie Java richtig gelernt hast. Wie soll ich eine Erklärung von jemandem, der es selber nicht versteht verstehen? Ich meine den ganzen Code, nicht nur einen kleinen Ausschnitt. An den Hinzufügemethoden/Speichermethoden wird wohl kaum ein Fehler sein.

Kommentar von Trachom ,

Das ist der ganze Code, der relevant ist.

Kommentar von androhecker ,

Also gut, dann nicht. Du siehst auch daran, dass es keine anderen Antworten gibt, dass die Frage einfach nur schlecht gestellt ist.

Kommentar von Trachom ,

Da hast du recht, jedoch wurde in den Kommentaren alles ausführlich erklärt.

Kommentar von androhecker ,

Von jemanden, der überhaupt keine Ahnung von Java hat, aber ein Java API verwendet, die absolut nicht für Anfänger geeignet ist. Sorry aber solange du nicht wenigsten einen großen Teil von allem was hier (http://openbook.rheinwerk-verlag.de/javainsel/) steht weißt, kannst du Spigot/Bukkit vergessen.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten