godot 4: "" aus array entfernen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Array oder String oder was?

Strips all non-printable characters from the beginning and the end of the string. (...)

https://docs.godotengine.org/en/stable/classes/class_string.html#class-string-method-strip-edges

Anführungszeichen sind ja ganz offensichtlich printable. Schau dir z.B. rstrip() und lstrip() an.


Gamer4214 
Beitragsersteller
 15.10.2023, 12:48

Das geht irgendwie nicht. Ich kann da nur die Buchstaben löschen.

Ich mache ziemlich viel über variablen weil ich nicht so gut bin und über gdscript.

Ich will wie gesagt dieses " Zeichen entfernen

wenn ich z.b. habe

var a = "Hallo Welt"

und ich dann als output will:

Hallo Welt

liegt es dann an der Darstellung muss

ich print(float(a))

oder print(str(a))

oder etwas ähnliches machen.

Das Problem ist, das es immer innerhalb der " " die Buchstaben löscht.

wenn ich will:

if area.name in Global.House:

mach irgendwas

Global.House = ["Tisch", "Stuhl"]

problem jetzt ist, habe ich über print herausgefunden:

area.name = Tisch

Global.House = "Tisch"

also passiert nichts

0

Um die Anführungszeichen aus deinem Array zu entfernen und die Elemente als String auszugeben, kannst du eine Funktion erstellen, die durch das Array iteriert, jedes Element in einen String konvertiert und die Ergebnisse zusammenfügt. Hier ist ein Beispiel, wie du das machen könntest:

func array_to_string(arr: Array) -> String:
var s = ""
 for i in arr:
    s += str(i).replace("\"", "") + ", "
  return s.strip_edges(", ")

In dieser Funktion wird die `replace()` Methode verwendet, um die Anführungszeichen zu entfernen, und `strip_edges()` um das letzte Komma und Leerzeichen zu entfernen. Du kannst diese Funktion dann wie folgt aufrufen:

var welt = ["Hello World", "Hello World2"]
print(array_to_string(welt)) # Ausgabe: Hello World, Hello World2

Diese Methode entfernt alle Anführungszeichen in den Elementen des Arrays und gibt die Elemente als durch Kommas getrennten String aus.


Gamer4214 
Beitragsersteller
 15.10.2023, 15:07

Ich habe nach einer anderen Lösung nun gesucht, da ich das was du geschrieben hast nicht so 100%ig verstehe.

area entered (area):

var areaname = "\"" + area.name + "\""

var areas = ["Haus", Dachboden]

if areaname in areas:

do ..

ich habe die print ausgabe genutzt.

Wenn man die Haus area entered schreibt es:

"Haus"

bei den areas:

["Haus", "Dachboden"]

selbst wenn ich nur eine var Gebaeude habe und kein array wo nur "Haus" drinnen steht ist die Ausgabe:

print(areaname)

print(Gebaeude)

Die Ausgabe ist ident, wenn ich aber gucke ob areaname in Gebaeude ist, macht es nichts

0
Gamer4214 
Beitragsersteller
 15.10.2023, 15:22
@Gamer4214

var areas = ["Haus", "Dachboden"] sollte es hier heißen, ein Fehler

0