OpenSCAD Benutzerhandbuch/String-Funktionen
str
[Bearbeiten]Wandelt alle Argumente in Zeichenketten um und fügt sie zusammen.
Beispiele:
number=2;
echo ("This is ",number,3," and that's it.");
echo (str("This is ",number,3," and that's it."));
Ergebnisse:
ECHO: "This is ", 2, 3, " and that's it."
ECHO: "This is 23 and that's it."
So kannst du einfach Zahlen in Zeichenketten umwandeln:
s = str(n);
chr
[Bearbeiten]Wandelt Zahlen in ein Zeichen mit dem entsprechenden Unicode-Codepunkt um. OpenSCAD verwendet Unicode – daher wird die Zahl als Unicode-Codepunkt interpretiert. Ungültige Codepunkte liefern eine leere Zeichenkette.
Parameter
- "chr(Zahl)"
- Wandelt einen gültigen Codepunkt in ein Zeichen (String der Länge 1) um.
- "chr(Vektor)"
- Wandelt alle Codepunkte im Vektor in eine Zeichenkette um.
- "chr(Bereich)"
- Wandelt alle durch den Bereich erzeugten Codepunkte in eine Zeichenkette um.
Beispiele
echo(chr(65), chr(97)); // ECHO: "A", "a"
echo(chr(65, 97)); // ECHO: "Aa"
echo(chr([66, 98])); // ECHO: "Bb"
echo(chr([97 : 2 : 102])); // ECHO: "ace"
echo(chr(-3)); // ECHO: ""
echo(chr(9786), chr(9788)); // ECHO: "☺", "☼"
echo(len(chr(9788))); // ECHO: 1
Hinweis: Bei Ausgabe über "echo()" ist die Darstellung von Zeichen mit Codepunkten > 127 plattformabhängig.
ord
[Bearbeiten]Wandelt ein Zeichen in seinen Unicode-Codepunkt um. Ist der Parameter keine Zeichenkette, liefert "ord()" "undef".
Parameter
- "ord(Zeichenkette)"
- Gibt den Codepunkt des ersten Zeichens der Zeichenkette zurück.
Beispiele
echo(ord("a"));
// ECHO: 97
echo(ord("BCD"));
// ECHO: 66
echo([for (c = "Hello! 🙂") ord(c)]);
// ECHO: [72, 101, 108, 108, 111, 33, 32, 128578]
txt="1";
echo(ord(txt)-48,txt);
// ECHO: 1,"1" // wandelt nur das erste Zeichen um
len
[Bearbeiten]Gibt die Anzahl der Zeichen in einer Zeichenkette zurück.
echo(len("Hello world")); // 11
Siehe auch: search()
[Bearbeiten]search() für die Suche in Texten.
is_string(value)
[Bearbeiten]Die Funktion "is_string(value)" gibt "true" zurück, wenn "value" eine Zeichenkette ist, sonst "false".
echo(is_string("alpha")); // true
echo(is_string(22)); // false
Benutzerdefinierte Funktionen
[Bearbeiten]Neben den eingebauten Funktionen kannst du auch eigene schreiben. Hier ein paar Beispiele:
//-- Alle Buchstaben in Kleinbuchstaben umwandeln (funktioniert nicht mit Akzenten)
function strtolower(string) =
chr([for(s=string) let(c=ord(s)) c<91 && c>64 ? c+32 : c]);
//-- Einzelnes Zeichen in einer Zeichenkette ersetzen
function char_replace(s, old=" ", new="_") =
chr([for(i=[0:len(s)-1]) s[i]==old ? ord(new) : ord(s[i])]);
//-- Letzte Zeichen einer Zeichenkette ersetzen (z. B. Dateiendung ändern)
function str_rep_last(s, new=".txt") =
str(chr([for(i=[0 : len(s)-len(new)-1]) ord(s[i])]), new);
//-- Ganzzahl aus Zeichenkette extrahieren (nur Ziffern!)
function strtoint(s, ret=0, i=0) =
i >= len(s)
? ret
: strtoint(s, ret*10 + ord(s[i]) - ord("0"), i+1);
Beachte hier die Verwendung von "chr()", um eine Zeichenkette aus einer beliebigen Anzahl von Unicode-Codepunkten zusammenzusetzen. Das erspart dir heute die komplizierten rekursiven Module, die vor Einführung der Listenverarbeitung nötig waren.