Zum Inhalt springen

OpenSCAD Benutzerhandbuch/String-Funktionen

Aus Wikibooks

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);

Vorlage:Requires

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.

Vorlage:Requires

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

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.