Methoden zur Verwendung von Objekten der Klasse String.
Methoden zur Verwendung von Objekten der Klasse String.
String-Objekte werden intern als UTF-8 codiert erwartet.
String-Objekte mit anders kodierten Daten können zu unerwarteten Ergebnissen führen!
Bitte beachten Sie den fundamentalen Unterschied zwischen Strings vom Typ String und char*!
char* ist ein Stück Arbeitsspeicher, das Sie zuvor mit alloc reserviert haben. Der Inhalt dieses Stück Speichers kann bis zur Größe dieses Speichers gefüllt werden, aber nicht weiter! Eine Ascii-0 innerhalb dieses reservierten Speicherbereiches signalisiert das Ende Ihrer Zeichenkette (aber nicht zwangsläufig des Ende des reservierten Speicherbereiches).
Die folgende Tabelle zeigt eine mit der Länge 5 allokierte char*-Zeichenkette. alloc hat dafür die Adresse 1000 gewählt und 5 Bytes für den Inhalt reserviert. Mit strcpy (my_char, "FUN"); wurden vier der Bytes dieses Bereiches gefüllt, drei mit den Zeichen und eins am Ende mit \0 zur Markierung, dass hier der Text endet:
Adresse | 1000 | 1001 | 1002 | 1003 | 1004 |
Inhalt | F | U | N | \0 | undefinert |
String dagegen ist ein Objekt, das viel einfacher ist. Über die Länge und den Speicherort seines Inhaltes müssen Sie sich keine Gedanken machen. Das macht dieses Objekt vollkommen alleine.
Adresse | 1000 | ... | char* mit Inhalt |
Inhalt |
Interne Objekt-Informationen ... Aktuelle Größe des Inhaltsspeichers char*-Adresse auf den Inhalt |
... | FUN\0 |
Zeichenpositionen innerhalb eines Strings werden immer 0-basiert gezählt.
Da UTF-8-Zeichen innerhalb eines Strings aus bis zu 4 Einzel-Bytes bestehen können, gibt es einen Unterschied zwischen dem sogenannten Zeichen- oder UTF-8- und dem "wirklichen" oder Byte-Index eines Zeichens : Weil der Buchstabe ä aus zwei UTF8-Zeichen besteht, hat das n in "Hände" zwar den Zeichenindex 2 aber den Byte-Index 3.
Soweit nichts anders angegeben, verwenden die String-Funktionen den Zeichenindex.
static String string::alloc(char* value = "", ...)
Erzeuge einen neuen selbstverwalteten String. Das Objekt muss mit string::release wieder gelöscht werden.
Name | Typ | Default | Beschreibung |
Return | String | Ein neues Objekt von Typ String | |
value | String oder char* | "" | Initialwert des Strings. Der Wert wird kopiert. Der Wert darf Format-Tags enthalten, mehr dazu dazu siehe hier. Für jeden %-Marker wird (in der richtigen Reihenfolge und vom richtigen Datentyp) eine weitere Eingabevariable erwartet. seit v4.1 R16516 |
... | Abhängig von den Markierungen | - | [Ab v4.1 R16516] Werte oder Variablen gemäß den %-Tags in value |
String str = string::alloc ();
static void string::release(String str)
Löschen eines mit string::alloc erzeugten String-Objektes
Name | Typ | Default | Beschreibung |
str | String | - | Lösche dieses Objekt aus dem Speicher |
String str = string::alloc (); : : string::release (str);
static String string::set(
String target,
String format,
...)
Setze den Wert des Strings
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
target | String | - | Stringobjekt, dessen Wert gesetzt werden soll |
format | String oder char* | - | Neuer Wert des Strings. Der Wert wird kopiert. Der Wert darf Format-Tags enthalten, mehr dazu dazu siehe hier. Für jeden %-Marker wird (in der richtigen Reihenfolge und vom richtigen Datentyp) eine weitere Eingabevariable erwartet. |
... | Abhängig von den Markierungen | - | Werte oder Variablen gemäß den %-Tags in format |
int main( { String str = string::alloc();
string::set(str, "Hallo Welt"); showmessage(str);
string::release (str);
return 0; }
static char* string::get(String str)
Hole den Inhalt eines Strings als char*.
Name | Typ | Default | Beschreibung |
Return | char* | Der Inhalt des Objektes als 0-terminierter C-String vo Typ char*.
Der Rückgabewert darf nur gelesen werden! Er darf niemals (in Worten : NIEMALS) direkt geändert werden. Änderungen an diesem char* führen zum sofortigen Absturz von InDesign®. Mit strcpy kann der Inhalt eines Strings in einen genügend groß allokierten char*-String übernommen werden. |
|
str | String | - | Stringobjekt, dessen Inhalt ermittelt werden soll |
String str = string::alloc ();
textmodel::gettext (str, 0, kEnd); showmessage (string::get (str));
string::release (str);
static char* string::data(String str)
Inhalt eines String-Objektes. Das Ergebnis kann 0-Bytes enthalten. "Strings" mit 0-Bytes können sinnvoll sein zum Transport binärer Dateien.
Name | Typ | Default | Beschreibung |
Return | int | Inhalt eines String-Objektes. Das Ergebnis kann 0-Bytes enthalten. | |
str | String | - | Gültiger String |
Lies eine Binärdatei und schreibe das Ergebnis in eine andere Datei. (Bitte beachten Sie: Das Sktipt dient lediglich zur Demonstration, im Produktivfall würden Sie hier besser die Funktion file::duplicate verwenden!)
int main () { String str = string::alloc (); int fileRef; int fileSize;
// Read file fileRef = file::open("$DESKTOP/b1.jpg", "r"); fileSize = file::read_str (fileRef, str, 4); file::close (fileRef);
// Write read data to another file fileRef = file::open("$DESKTOP/b2.jpg", "w"); file::write (fileRef, string::data (str), fileSize); file::close (fileRef);
return 0; }
static int string::length(String str, int countBytes = 1)
Aktuelle Länge des Strings.
Name | Typ | Default | Beschreibung |
Return | int | Länge des Strings in Bytes oder Buchstaben | |
str | String | - | Stringobjekt, dessen Länge ermittelt werden soll |
countBytes | int | 1 | Welche Länge soll ermittelt werden? 0 : Buchstaben, Mehrbyte-UTF8-Zeichen zählen als ein Zeichen 1 : Bytes |
String str = string::alloc (); int len; : textmodel::gettext (str); len = string::length (str); : string::release (str);
static String string::append(
String target,
String toAppend,
...)
Anfügen an einen String
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
target | String | - | Stringobjekt, an das angefügt werden soll |
toAppend | String oder char* | - | Wert, der angefügt werden soll. Der Wert darf Format-Tags enthalten, mehr dazu dazu siehe hier. Für jeden %-Marker wird (in der richtigen Reihenfolge und vom richtigen Datentyp) eine weitere Eingabevariable erwartet. |
... | Abhängig von den Markierungen | - | Werte oder Variablen gemäß den %-Tags in format since v4.1 R22201 |
int main() { String str = string::alloc("aaa");
string::append(str, "bbb %d", 123); showmessage(str); //shows "aaabbb 123"
string::release(str);
return 0; }
static String string::insert(
String target,
int position,
String input)
Einfügen in einen String
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
target | String | - | Stringobjekt, in das eingefügt werden soll |
position | int | - | Position an der eingefügt werden soll -1: Am Ende |
input | String oder char* | - | Wert der eingefügt werden soll |
int main() { String target = string::alloc(); String input = string::alloc(); int length = 0;
string::set(target, "AAACCC"); string::set(input, "BBB");
//insert at position 3 (middle) string::insert(target, 3, input); showmessage(target); //shows "AAABBBCCC"
//insert at the end length = string::length(target, 0); string::insert(target, length, "DDD"); showmessage(target); //shows "AAABBBCCCDDD"
string::release(target); string::release(input);
return 0; }
static String string::erase(
String input,
int position,
int length = -1)
Löschen von Zeichen aus einem String
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | Stringobjekt, aus dem gelöscht werden soll |
position | int | - | Position ab der gelöscht werden soll |
length | int | -1 | Wieviele Zeichen sollen gelöscht werden (-1 = bis Ende)? |
int main() { String target = string::alloc();
string::set(target, "Hello World");
string::erase(target, 4, 1); showmessage(target); //shows "Hell World"
string::erase(target, 4, -1); showmessage(target); //shows "Hell"
string::release(target);
return 0; }
static int string::find(
String searchIn,
char* searchFor,
int fromPosition = 0,
int* matchLength = 0,
int* matches = 0,
int compile_options = 0,
int study_options = 0,
int exec_options = 0)
Suchen von Strings in einem String
Name | Typ | Default | Beschreibung |
Return | int | -1 : nicht gefunden sonst : Position des gesuchten Strings |
|
searchIn | String | - | Stringobjekt, in dem gesucht werden soll |
searchFor | String oder char* | - | Suche nach diesem Unterstring. Muss ungleich "" sein. Der Suchstring darf ein regulärer Ausdruck sein. Reguläre Ausdrücke werden mit dem Präfix "regexp:" oder "pcre:" gekennzeichnet. |
fromPosition | int | 0 | Ab dieser Position soll gesucht werden |
matchLength | int * | 0 | (Nur bei Verwendung regulärer Ausdrücke) Länge des gefundenen Ausdruckes. |
matches | int * | 0 | (Nur bei Verwendung regulärer Ausdrücke) Int-Array mit Angaben über das Ergebnis Das Array enthält jeweils Startposition und Länge des nächsten gefundenen Ausdruckes. Im ersten Zahlenpaar stehen die Angaben für den gesamten Ausdruck. Die folgenden Paare enthalten jeweils die Angaben des i-ten Unterausdruckes. Unterausdrücke sind die in runde Klammern eingeschlossenen Teile des regulären Ausdruckes, also etwa ([a-z]{3,7}). Abgeschlossen wird das Feld durch das Paar (-1, 0). Beachten Sie bitte, dass Unterausdrücke durchaus die Länge 0 liefern können. Wird der reguläre Ausdruck ([0-9])([a-z]{0,7})([0-9])) auf den Text "14" angewendet, ist nämlich der zweite Ausdruck leer. Bei einer Angabe ungleich 0 muss das Array mind. um 4 größer sein als die doppelte Anzahl der Klammerausdrücke im regulären Ausdruck - jeweils zwei int's für den Starteintrag, die n Subentries und die Ende-Markierung. Eine einfache Definition eines Matches-Arrays für einen regulären Ausdruck mit 4 Untereinträgen. int matches [6]; |
compile_options | int | 0 | Zusatzoptionen beim Kompilieren des regulären Ausdruckes, siehe hier |
study_options | int | 0 | Zusatzoptionen beim Untersuchen des kompilierten regulären Ausdruckes, siehe hier |
exec_options | int | 0 | Zusatzoptionen beim Suchen des regulären Ausdruckes, siehe hier |
int main() { String myString = string::alloc(); int position = 0;
string::set(myString, "123 444 555"); position = string::find(myString, "444", 0); showmessage("Found at %d", position); //Shows "Found at 4" string::release(myString);
return 0; }
//find regex with loop int main() { String myString = string::alloc(); String foundString = string::alloc(); int position = 0; int matchLength = 0;
string::set(myString, "ÄÄÄ 123 øøø 444"); while (1) { //find blocks of numbers position = string::find(myString, "pcre:[0-9]+", position + matchLength, &matchLength); if (position < 0) { break; } if (matchLength <= 0) { break; } string::set(foundString, string::substring(myString, position, matchLength));
showmessage("found match (with loop) at %d with length %d: %s", position, matchLength, foundString); } string::release(myString); string::release(foundString);
return 0; }
static int string::rfind(
String searchIn,
char* searchFor,
int fromPosition = -1)
Rückwärts-Suche in einem String.
Name | Typ | Default | Beschreibung |
Return | int | -1 : nicht gefunden sonst : Position des gesuchten Strings |
|
searchIn | String | - | Stringobjekt, in dem gesucht werden soll |
searchFor | String oder char* | - | Suche rückwärts nach diesem Unterstring. Muss ungleich "" sein.
Achtung : Im Gegensatz zu string::find unterstützt die Rückwärtssuche keine regulären Ausdrücke! |
fromPosition | int | 0 | Ab dieser Position soll rückwärts gesucht werden < 0 : Ende des Strings |
static String string::replace(
String input,
String searchFor,
String replaceBy,
int position = 0,
int replaceAll = 1,
int compile_options = 0,
int study_options = 0,
int exec_options = 0)
Ersetzen von Substrings in einem String
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | Stringobjekt, in dem gesucht werden soll |
searchFor | String oder char* | - | Suche nach diesem Unterstring. Muss ungleich "" sein. Der Suchstring darf ein regulärer Ausdruck sein. Reguläre Ausdrücke werden mit dem Präfix "regexp:" oder "pcre:" gekennzeichnet. |
replaceBy | String oder char* | - | Dieser String ersetzt die gefundenen Unterstrings. |
position | int | 0 | Ab dieser Position soll gesucht werden |
replaceAll | int | 1 | Sollen alle Vorkommen (1) oder nur das erste gefundene (0) ersetzt werden?. |
compile_options | int | 0 | Zusatzoptionen beim Kompilieren des regulären Ausdruckes, siehe hier |
study_options | int | 0 | Zusatzoptionen beim Untersuchen des kompilierten regulären Ausdruckes, siehe hier |
exec_options | int | 0 | Zusatzoptionen beim Suchen des regulären Ausdruckes, siehe hier |
int main() { String myString = string::alloc();
string::set(myString, "Hello Leo, how are you today Leo?"); string::replace(myString, "Leo", "Paul"); showmessage(myString); //shows "Hello Paul, how are you today Paul?"
return 0; }
//replace all white space in a string with underscores int main() { String myString = string::alloc();
string::set(myString, "Hello Leo, how are you today Leo?"); string::replace(myString, "pcre:[\\s]+", "_"); showmessage(myString); //shows "Hello_Leo,_how_are_you_today_Leo?"
return 0; }
String string::replace_multis(String str, String repl = 0)
Entferne Mehrfach-Zeichen aus dem String. Die Funktion ersetzt für jedes Zeichen der Zeichenkette repl alle Wiederholungen in span[src]{str}. Mit dem repl-String "abc" werden alle alle "aa", "bb", "cc", "aaa", "bbb", "ccc", ... auf jeweils ein Zeichen verkürzt.
Name | Typ | Default | Beschreibung |
Return | char* | Der Zeiger auf den Eingabestring wird wieder zurückgegeben. | |
str | char* | - | Eingabestring |
repl | char* | 0 | String mit den einzelnen Zeichen, die ersetzt werden sollen. Der String darf
nur reine ASCII-Zeichen enthalten! 0 : Ersetze alle Mehrfach-Leerzeichen durch einfache Leerzeichen |
Hier ein Beispiel eines Stringvergleich-Skriptes
char * prepare_string (char * str) { char * result = alloc (strlen (str)+10);
get_netweight_str (result, str, 1, 1); strreplace (result, "\t", " "); strreplace_multis (result, " \t");
return result; }
int main () { return strcmp (prepare_string (gDocumentValue), prepare_string (gDataPoolValue)); }
static char* string::replace_all(
String str,
char* search,
char* repl)
Ersetze alle Vorkommen eines Substrings durch einen anderen Substring.
Name | Typ | Default | Beschreibung |
Return | char* | Der neue Inhalt des Strings als 0-terminierter C-String.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
str | String | - | Stringobjekt, dessen Inhalt geändert werden soll |
search | char* oder String | - | Suchenstring |
rep | char* oder String | - | Ersetzenstring |
String str = string::alloc ();
textmodel::gettext (str, 0, kEnd); showmessage (string::replace_all (str, "aa", "a"));
string::release (str);
static String string::substring(
String input,
int position,
int length = -1)
Extrahieren eines Teilstrings aus einem String
Name | Typ | Default | Beschreibung |
Return | String | Substring Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden |
|
input | String | - | Stringobjekt, aus dem extrahiert wird |
position | int | - | Startposition des Teilstrings |
length | int | -1 | Länge des Teilstrings (-1 = bis Ende) |
int main () { String str = string::alloc("Hallo Welt"); String sub = string::alloc();
sub = string::substring(str, 0, 5); showmessage(sub); //shows "Hallo"
string::release(str); string::release(sub);
return 0; }
static int string::compare(
String first,
String second,
int maxLength = -1,
int netweight = 0)
Alpha-numerischer Vergleich zweier Strings.
Der Text eines leeren Textplatzhalters ist nicht leer sondern ein unsichtbares Leerzeichen (<0x200B>). (Ein Platzhalter kann keinen leeren Text enthalten, dann wäre auch der Platzhalter weg.)
Das showmessage im folgenden Skripttext wird also nie erreicht :
int main ()
{
String docText = string::alloc();
textmodel::gettext(docText);
if (string::compare(docText, "") == 0) {
showmessage("Empty!");
}
string::release(docText);
return 0;
}
Der Dokumenttext muss in dieser Situation gegen das unsichtbare Leerzeichen (UTF8 = E2 80 8B, Unicode = 200B) geprüft werden :
int main ()
{
String docText = string::alloc();
textmodel::gettext(docText);
if (string::compare(docText, "\xE2\x80\x8B") == 0) {
showmessage("Empty!");
}
string::release(docText);
return 0;
}
Verwenden Sie für das Abholen des Dokumenttextes ein TaggedText-Format, wird das unsichtbare Leerzeichen Unicode-codiert, allerdings ist der TaggedText etwas länger und enthält das Absatzformat, was einen direkten Vergleich erschwert, da es unterschiedlich sein kann :
#include "internal/text.h"
int main ()
{
String docText = string::alloc();
textmodel::gettext(docText, 0, -1, kExportTT);
if (string::compare(docText, "%!TT<ParaStyle:NormalParagraphStyle><0x200B>") == 0) {
showmessage("Empty!");
}
string::release(docText);
return 0;
}
Zum Vergleich der "Netto"-Strings können Sie die Funktion mit netWeight = 1 verwenden.
Name | Typ | Default | Beschreibung |
Return | int | < 0 : first < second | |
Return | int | = 0 : first == second | |
Return | int | > 0 : first > second | |
first | String oder char* | - | Erster String im Vergleich |
second | String oder char* | - | Zweiter String im Vergleich |
maxLength | int | -1 | Vergleiche die Strings bis zu dieser Länge. Ist einer der Strings kürzer als maxLength, wird der Vergleich bereits am Ende dieses Strings abgebrochen. |
netweight | int | 0 | "Netto"inhalte der Strings vergleichen. Die Netto-Werte der Strings werden wie folgt beberechnet :
|
static String string::upper(String input)
String in Großbuchstaben umwandeln.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | String, der in Großbuchstaben umgewandelt werden soll. |
static String string::lower(String input)
String in Kleinbuchstaben umwandlen.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | String, der in Kleinbuchstaben umgewandelt werden soll. |
static String string::reverse(String input)
Spiegle einen String
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | String der umgekehrt werden soll. |
static String string::trim(String input, char toTrim = 0)
Entferne alle Auftreten eines bestimmten Zeichens am Anfang und am Ende einer Zeichenkette.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter Eingabestring | |
input | String | - | String der getrimmt werden soll. |
toTrim | char | 0 | Zeichen, das entfernt werden soll. Es sind nur Ein-Byte-Zeichen mit einem Ascii-Wert < 128 erlaubt. Höherwertige Ascii- oder Unicode-Zeichen können zum Absturz von InDesign® führen. 0 : Entferne alle unsichtbaren Zeichen (Blanks, Tabs, Zeilentrenner, ...) am Anfang und am Ende des Strings |
static int (
String input,
char delimiter,
int checkIfEmpty = 0)
Bei der Verwendung von UTF-8-Strings ist die Funktion extrem toxisch und sollte dringend durch string::get_token_count ersetzt werden:
static String (
String input,
char delimiter,
int tokenIndex)
Bei der Verwendung von UTF-8-Strings ist die Funktion extrem toxisch und sollte dringend durch string::get_token ersetzt werden:
static int string::get_token_count(String str, String delimiter)
Aus wievielen, nach einem bestimmten Wort getrennten Teilen (den sogenannenten Tokens) besteht eine Zeichenkette? Übliche Anwendungen sind tabulatorgetrennte Textzeilen oder Dateipfade. Zur Vereinfachung der Aufrufe dürfen beide Zeichenketten sowahl als String als auch als char* angegeben werden.
Name | Typ | Default | Beschreibung |
Return | int | Anzahl der durch delimiter getrennten Tokens im Eingabenstring. | |
str | String oder char* | - | Zu durchsuchender String |
delimiter | String oder char* | - | Trenner. Der Trenner darf UTF-8-Zeichen enthalten und mehrere Zeichen lang sein. |
Das Beispiel zählt verschieden Tokens im String 'Matthias'.
String str = string::alloc ();
...
string::set (str, "Matthias"); string::get_token_count (str, "a") // returns 3 string::get_token_count (str, "i") // returns 2 string::get_token_count (str, " ") // returns 1
static String string::get_token(
String str,
String delimiter,
int nth)
Hole das n-te Wort des durch einen festgelegten Trenner unterteilten Strings. übliche Anwendungen sind tabulatorgetrennte Textzeilen oder Dateipfade. Zur Vereinfachung der Aufrufe dürfen beide Zeichenketten sowahl als String als auch als char* angegeben werden. Beachten Sie aber bitte, dass das Ergebnis in jedem Fall vom Typ String ist.
Name | Typ | Default | Beschreibung |
Return | String | Gefundes Token. Wurde kein weiteres Token gefunden, ist das Ergebnis leer. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden. | |
str | String oder char* | - | Zu durchsuchender String |
delimiter | String oder char* | - | Trenner. Der Trenner darf UTF-8-Zeichen enthalten und mehrere Zeichen lang sein. |
nth | int | - | 0-basierter Index des Tokens |
Ermittle verschiedene Tokens eines Wortes:
int main () { String str = string::alloc ("Matthias");
wlog ("", "'%s' ?= 'M'\n", string::get_token (str, "a", 0)); // ergibt M wlog ("", "'%s' ?= 'tthi'\n", string::get_token (str, "a", 1)); // ergibt tthi wlog ("", "'%s' ?= 's'\n", string::get_token (str, "a", 2)); // ergibt s wlog ("", "'%s' ?= ''\n", string::get_token (str, "a", 3)); // ergibt den Leerstring wlog ("", "'%s' ?= 'Matthias'\n", string::get_token (str, "x", 0)); // ergibt Matthias wlog ("", "'%s' ?= ''\n", string::get_token (str, "x", 3)); // ergibt den Leerstring
return 0; }
static int string::to_int(String input)
Umwandlung eines Ganzzahlen-Zahlenstring in eine Zahl. Der String darf auch Hexadezimal- oder Oktalzahlen enthalten. Hexadezimalzahlen beginnen mit "0x".
Name | Typ | Default | Beschreibung |
Return | int | Zahlenwert des Strings | |
input | String | - | Zahlenstring |
//Different formats for representing the same number int main() { String myString = string::alloc(); int stringValue = 0;
string::set(myString, "255"); stringValue = string::to_int(myString); showmessage("%d", stringValue); //shows 255
string::set(myString, "0xff"); stringValue = string::to_int(myString); showmessage("%d", stringValue); //shows 255
string::set(myString, "0xFF"); stringValue = string::to_int(myString); showmessage("%d", stringValue); //shows 255
string::set(myString, "0xFFTTT"); stringValue = string::to_int(myString); showmessage("%d", stringValue); //shows 255
string::release(myString);
return 0; }
Der Datentyp int ist 64 Bit breit. Hier ein Beispiel mit Zahlen, deren Darstellung mehr als 32 Bit benötigt.
int main () { int a = 6917529027641081856; String str = string::alloc(); string::from_int(str, a);
//the messages below show the same value showmessage("Int value of a is %d", a); showmessage("Int value of str is %d", string::to_int(str));
string::release(str);
return 0; }
static String string::from_int(int value)
Umwandlung einer Zahl in einen String. Aus der Zahl i wird der String 'i' gemacht.
Name | Typ | Default | Beschreibung |
Return | String | Zahl als String. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden |
|
value | int | - | Zahlwert der in einen String umgewandelt werden soll |
int main () { int a = 1234; showmessage(string::from_int(a));
return 0; }
static float string::to_float(String input)
Umwandlung eines float-Zahlenstrings in eine float-Zahl
Name | Typ | Default | Beschreibung |
Return | float | Float-Zahlenwert des Strings | |
input | String | - | Float-Zahlenstring. Die Zahl kann mit Komma oder Punkt geschrieben sein, zwischen den Tausendern sind keine Trenner erlaubt. |
//Different formats for representing the same number int main () { String myString = string::alloc();
string::set(myString, "12.3"); showmessage("%f", string::to_float(myString)); //shows 12.3000
string::set(myString, "12,3"); showmessage("%f", string::to_float(myString)); //shows 12.3000
string::set(myString, "1.23e+1"); showmessage("%f", string::to_float(myString)); //shows 12.3000
string::set(myString, "123.e-1"); showmessage("%f", string::to_float(myString)); //shows 12.3000
string::release(myString);
return 0; }
static String string::from_float(float value, String format)
Umwandlung einer float-Zahl in einen String.
Name | Typ | Default | Beschreibung |
Return | String | Float-Zahl als String. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden |
|
value | float | - | Float-Zahlwert der in einen String umgewandelt werden soll |
format | String oder char* | "%f" | Formatierungsangabe, i. A. "%f". Weitere Formatierungen finden Sie in jeder Dokumentation über die C-Funktion sprintf. |
int main () { float f = 12.34567; showmessage(string::from_float(f, "%.2f")); //shows 12.35
return 0; }
static String string::get_netweight(
String source,
int convertUniTags = 0,
int replaceTypos = 0,
int replaceHTMLEntities = 0)
Ermittle den Nettowert eines Strings. Die Netto-Werte der Strings werden wie folgt berechnet :
Name | Typ | Default | Beschreibung |
Return | String | String mit dem wie oben beschrieben gekürzten Eingabetext.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
source | String oder char* | - | String, dessen Nettowert berechnet werden soll |
convertUniTags | int | 0 | Sollen Unicode-Tags der Form <0x200B> automatisch ersetzt werden? 0 : Nein sonst : Ja |
replaceTypos | int | 0 | Sollen Anführungs-, Leer- und Trennzeichen vereinheitlich werden? 0 : Nein sonst : Ja |
replaceHTMLEntities | int | 0 | [Ab v5.0 R37000] Sollen HTML-Entities durch ihre UTF-8 Zeichen ersetzt werden? 0 : Nein sonst : Ja. Alle HTML-Entities der Formen ä, ä und ä werden durch ihr Unicode-Zeichen (in diesem Fall ä) ersetzt. |
int main () { String source = string::alloc("ÄÖü"); String netWeight = string::alloc();
string::set(netWeight, string::get_netweight(source)); showmessage(netWeight); //Shows "<0x00C4><0x00D6><0x00DC>"
string::release(source); string::release(netWeight);
return 0; }
Hier einige Ergebenisse von get_netweight_str mit der Eingabe "--Hallo <0x275D>Hällo<0x275E>--". Die gleichen Ergebnisse erhalten Sie auch mit der unkodierten Eingabe "--Hallo ❝Hällo❞--".
0, 0 --Hallo <0x275D>H<0x00E4>llo<0x275E>-- 0, 1 --Hallo "H<0x00E4>llo&"-- 1, 0 --Hallo ❝Hällo❞-- 1, 1 --Hallo "Hällo"--
static String string::md5(String input, int upperCase = 0)
Berechne den md5hash eines Textes.
Name | Typ | Default | Beschreibung |
Return | String | 32-stelliger md5hash des Textes.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
text | String oder char* | - | Beliebiger String |
upperCase | int | 0 | Groß- oder Kleinbuchstaben für die Hex-Zahlen verwenden? 0 : Kleinbuchstaben 1 : Großbuchstaben |
Berechne den md5hash eines Strings.
int main () { String str = string::alloc("Hallo Welt"); String md5; md5 = string::md5(str);
if (md5 != 0) { showmessage(md5); }
string::release(str);
return 0; }
static String string::encode_base64(String source)
Base64-Codierung eines Strings erzeugen.
Name | Typ | Default | Beschreibung |
Return | String | Base64-codierter Eingabetext.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | String oder char* | - | Beliebiger String |
Kodierung eines Textes und Rückcodierung dieses Ergebnisses sollten den gleichen String liefern.
int main () { String str = string::alloc("Hallo Welt"); String reconverted; String base64;
base64 = string::encode_base64(str);
if (base64 != 0) { showmessage(base64); reconverted = string::decode_base64(base64); if (reconverted != 0) { showmessage(reconverted); //Shows "Hallo Welt" } }
string::release(str); //Do NOT release base64 and reconverted!" //This strings are r/o return values of built-in functions."
return 0; }
static String string::decode_base64(String source)
Decodieren eines base64-codierten Strings.
Name | Typ | Default | Beschreibung |
Return | String | Neu erzeugter String mit dem decodierten Eingabetext.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | String oder char* | - | Beliebiger base64 codierter String |
Kodierung eines Textes und Rückcodierung dieses Ergebnisses sollten den gleichen String liefern.
int main () { String str = string::alloc("Hallo Welt"); String reconverted; String base64;
base64 = string::encode_base64(str);
if (base64 != 0) { showmessage(base64); reconverted = string::decode_base64(base64); if (reconverted != 0) { showmessage(reconverted); //Shows "Hallo Welt" } }
string::release(str); //Do NOT release base64 and reconverted!" //This strings are r/o return values of built-in functions."
return 0; }
static char* string::to_cp1252(String source)
Konvertierung eines Strings in den 'Code Page 1252'
Name | Typ | Default | Beschreibung |
Return | char* | Neu erzeugter char* mit geänderter Codierung
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | String | - | Beliebiger String |
static char* string::to_systemcharset(String source)
Konvertierung eines Strings in den Systemzeichensatz
Name | Typ | Default | Beschreibung |
Return | char* | Neu erzeugter char* mit geänderter Codierung
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | String | - | Beliebiger String |
static char* string::to_macroman(String source)
Konvertierung eines Strings in Mac Roman
Name | Typ | Default | Beschreibung |
Return | char* | Neu erzeugter char* mit geänderter Codierung
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | String | - | Beliebiger String |
static int* string::to_wchar(String input, int* destination)
Konvertierung eines Strings in Unicode
Name | Typ | Default | Beschreibung |
Return | int* | Konvertierter String, entspricht Parameter destination | |
input | String | - | Beliebiger String |
destination | int* | - | Reservierter Speicher für das Ergebnis |
static String string::from_cp1252(char* input)
Konvertierung eines 'Code Page 1252' char*'s in einen String
Name | Typ | Default | Beschreibung |
Return | String | Neu erzeugter String.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | char* | - | CP1252 codierter String |
static String string::from_systemcharset(char* input)
Konvertierung eines mit dem Systemzeichensatz codierten char*'s in einen String
Name | Typ | Default | Beschreibung |
Return | String | Neu erzeugter String.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | char* | - | Systemzeichensatz codierter String |
static String string::from_macroman(char* input)
Konvertierung eines mit Mac Roman codierten char*'s in einen String
Name | Typ | Default | Beschreibung |
Return | String | Neu erzeugter String.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | char* | - | Mac Roman codierter String |
static String string::from_wchar(String source)
Konvertierung eines Unicode int*'s in einen String
Name | Typ | Default | Beschreibung |
Return | String | Neu erzeugter String.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
input | int* | - | Unicode codierter String |
static String string::escape_tagged(String source)
Ersetze alle nicht-ASCII Zeichen durch TaggedText Markierungen.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter input | |
input | String | - | Beliebiger String |
static String string::unescape_tagged(String source)
Ersetze TaggedText Markierungen durch die entsprechenden UTF8 Zeichen.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter input | |
input | String | - | Beliebiger String |
static String string::prepare_aem_url(
String url,
char* user = 0,
char* pwd = 0,
int pwd_encrypted = 0)
Vorbereiten einer Asset-URL des AEM® zum Download eines Assets.
Beim Platzieren von Assets aus AEM® mit Drag&Drop sendet AEM® eine URL ohne Benutzername und Passwort. Zum Laden des Assets werden diese Angaben aber benötigt. Die Anweisung fügt den Benutzernamen und das Passwort der atuellen AEM®-Verbindung in die übergebene URL ein. Besteht keine AEM®-Verbindung, können Defaults für Benutzer und Passwort übergeben werden.
Zusätzlich zum Einfügen der credentials wird die URL so korrigiert, dass AEM® den Inhalt des Assets liefern kann:
Weitere Ersetzungen in der URL können nach dem Aufruf mit allen verfügbaren String-Funktionen gemacht werden.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter url | |
url | String | - | URL eines AEM®-Assets |
user | String oder char* | 0 | Benutzername. Der Parameter wird nur ausgewertet, wenn keine aktuelle
Datenverbindung zu einem AEM® besteht. 0 oder leer : "admin" |
pwd | String oder char* | 0 | Passwort. Der Parameter wird nur ausgewertet, wenn keine aktuelle
Datenverbindung zu einem AEM® besteht. 0 oder leer : "admin" |
pwd_encrypted | int | 0 | Ist das Passwort verschlüsselt oder nicht? Der Parameter wird nur ausgewertet, wenn keine aktuelle
Datenverbindung zu einem AEM® besteht. 0 : Nein, Passwort im Klartext 1 : Ja, das Passwort ist crypt verschlüsselt |
static String string::crypt_url_credentials(String url)
Verschlüsselt Authentifizierungsdaten in einem URL wie z.B. http://user:password@pubserver.priint.com/...
Der URL kann mit string::decrypt_url_credentials wieder entschlüsselt werden.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter url | |
url | String | - | URL |
Entschlüsselt Authentifizierungsdaten in einem URL wie z.B. http://user:password@pubserver.priint.com/...
Der URL kann mit string::crypt_url_credentials wieder verschlüsselt werden.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter url | |
url | String | - | URL |
static String string::crypt(String str)
Verschlüsselt einen String. Das Ergebnis ist ein verschlüsselter und Base64-kodierter String. Die Verschlüsselung kann mit string::decrypt wieder rückgängig gemacht werden.
Name | Typ | Default | Beschreibung |
Return | String | Geänderter String, entspricht Parameter str | |
str | String | - | Zu verschlüsselnder String |
Entschüsselt eine mit string::crypt verschlüsselten String.
Alphabetic index HTML hierarchy of classes or Java