Stringbearbeitung

Letzte Änderung :
30.07.2025, 07:35 Uhr

Stringbearbeitung

static int text::replace_all(
  char* str,
  char* search,
  char* replace)

Ersetze alle Vorkommen eines Strings durch einen anderen String. Die Funktion funktioniert auch dann wenn der Ersetzenstring ein Teil oder ein Vielfaches des gesuchten Strings ist. Der Suchenstring darf nicht leer sein.

Name Typ Default Beschreibung
str char* - In diesem String wird ersetzt
search char* - Suche nach diesem Teilstring. Der Suchstring darf nicht leer sein.
replace char* - Ersetze durch diesen String. Dieser String darf leer sein.


priint:comet InDesign® Plug-Ins, comet_pdf

static int text::ireplace_all(
  char* str,
  char* key,
  int value)

Ersetze alle Vorkommen eines Strings durch eine Zahl. Der Befehl wird häufig dafür eingesetzt, um in TaggedText von der Datenbank die Platzhalterdefinitionen zu aktualisieren und dort die Textplatzhalter <ID>, <ID2>, ... durch ihre aktuellen Werte zu ersetzen. Der Suchenstring darf nicht leer sein.

Name Typ Default Beschreibung
str char* - In diesem String wird ersetzt
key char* - Suche nach diesem Teilstring. Der Suchstring darf nicht leer sein.
value int - Ersetze durch diesen Zahl.


priint:comet InDesign® Plug-Ins, comet_pdf

static int text::unix_to_win(char* str)

Ersetze alle Unix-Zeilentrenner in Windows-Zeilentrenner. Windows-Zeilentrenner bestehen aus zwei Zeichen, Unix-Zeilentrenner nur aus einem (was ja auch genügt). Der String wird also länger durch die Ersetzung. Das sollten sie bedenken und dem String genügend Speicher reservieren.

Name Typ Default Beschreibung
str char* - Zu bearbeitender String.


priint:comet InDesign® Plug-Ins, comet_pdf

static int text::xpress_to_tagged(char* tt)

Konvertiere XPress-Markentext in TaggedText. Der TaggedText ist nicht komplett InDesign®-kompatibel. Er enthält weitere Tags zur Definition von Platzhaltern in Texten und an Rahmen.

Name Typ Default Beschreibung
str char* - Zu bearbeitender String.


priint:comet InDesign® Plug-Ins, comet_pdf

static char* text::replace_typografics(char* str)

Typografische Anführungszeichen ersetzen.Beim Einsetzen von Text in InDesign®-Dokumente können Anführungszeichen automatisch durch typografische Anführungszeichen ersetzt werden. Holt man solche Texte (z.B. mit textmodel::gettext oder table::get_text) wieder ab, unterschieden sie sich natürlich von ihrem Original. Die Funktion replace_typografics ersetzt diese Zeichen durch gerade Anführungszeichen.

Folgende Zeichen werden ersetzt :
Suchen Ersetzen
"
"
'
'

Name Typ Default Beschreibung
Return char*   Zeiger auf den gegebenen Eingabestring
str char* - gültiger String.
#include "internal/text.h"
#include "internal/types.h"
int main () { String cstr = string::alloc (); char str [500];
strcpy (str, textmodel::gettext (cstr));
showmessage ("1 : %s", str); text::replace_typografics (str); showmessage ("2 : %s", str);
return 0; }

Mit Hilfe des Schlüsselwortes kExportPlainNoTypografics können typografische Anführungszeiuchen auch sofort ersetzt werden.

#include "internal/types.h"
#include "internal/text.h"
int main () { String cstr = string::alloc (); char str[500];
strcpy (str, textmodel::gettext (cstr,   0, kEnd,   kExportPlainNoTypografics));
showmessage ("1 : %s", str);
return 0; }

Das gleiche wie im ersten Beispiel kann man ohne die Verwendung von replace_typografics auch erreichen. Hier ein Beispiel für Mac OS X.

#include "internal/types.h"
int main () { String cstr = string::alloc (); char str[500];
strcpy (str, textmodel::gettext (cstr));
showmessage ("1 : %s", str); if (system::os () == kMacOS) { text::replace_all (str, "\xe2", "'"); text::replace_all (str, "\xd4", "'"); text::replace_all (str, "\xe3", "\""); text::replace_all (str, "\xd2", "\""); } showmessage ("2 : %s", str);
return 0; }

Version 1.3.4 (P/R 100)

priint:comet InDesign® Plug-Ins, comet_pdf

frame::gettext
table::get_text

static char* text::fortune(
  char* result,
  char* dbname,
  int seed = -1)

Gib ein Glückscookie aus.

Name Typ Default Beschreibung
Return char*   result
result char* - Allokierter Ergebnis-String
dbname char* - Name der Datenbank-Datei oder Ordner mit Datenbank-Dateien (jeweils relativ zum Comet PlugIn-Verzeichnis oder XML Ordner).
seed int -1 Initialisierungswert für die random Funktion.


priint:comet InDesign® Plug-Ins, comet_pdf

static char* text::find_styled_font(
  char* fontfamily,
  char* fontface,
  int italic,
  int weight,
  int stretch,
  int* found = 0)

Suche einen Schriftschnitt gegebener Eigenschaften in einer Schriftfamlie. Zu einer gegebenen Schrift wird ein geeigneter Schriftschnitt mit einer festgelegten Schriftstärke, Laufweite und Schriftneigung gesucht. Informationen über Schriftfamilien, Schriftschnitte und die fontDB finden Sie hier.

Name Typ Default Beschreibung
Return char*   Schriftschnitt mit den gewünschten Eigenschaften

Nicht jeder Font hat Schriftschnitte für jede Kombination aus Schriftstärke, Laufweite und Stil. Der gefundene Schriftschnitt muß daher nicht zwangsläufig alle Parameter erfüllen. Er ist aber eine bestmögliche Näherung. Siehe hier für weitere Informationen.

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.

fontfamily char* oder String - Name der Schriftfamilie
fontface char* oder String - Name des Schriftschnittes. Der Parameter wird nur benötigt, wenn weight > 900 oder stretch > 4 sind.
italic int - Schriftstil

0 : Normal
1 : Italic
weight int - Schriftstärke

100, 200, ..., 900 : Suche nach dieser Schriftstärke, siehe auch hier

> 900 : Ich kenne den Stilnamen und suche nach der zugehörigen Italic/Normalschrift. In diesem Fall darf fontface nicht leer sein.
stretch int - Laufweite

-4, -3, ..., 4 : Suche nach dieser Laufweite, siehe auch hier

> 4 : Ich kenne den Stilnamen und suche nach der zugehörigen Italic/Normalschrift. In diesem Fall darf fontface nicht leer sein.
found int* 0 Rückgabewert, ob ein Font im gewünschten Schnitt gefunden wurde

0 : Ignorieren

v4.1 R23232, 30. Mai 2018. Die Funktion darf in älteren Releases nicht benutzt werden!

priint:comet InDesign® Plug-Ins, comet_pdf

fontDB
system::fontdb_count
fontdb_get_fontname
fontdb_by_index
fontdb_by_name
fontdb_mark_missing

static char* text::translate(
  char* text,
  char* license_key,
  char* dest_lang,
  char* source_lang = 0)

Übersetzen eines Textes. Im Unterschied zur Funktion translate (ohne text::) übersetzt diese Funktion freie Texte in eine gewünschte, von der InDesign-Sprache unabhängige Zielsprache.

Für die Übersetztung wird der KI-basierte Übersetzungsdient deepl verwendet. Eine Liste der unterstützten Sprachen finden Sie hier. Der Dienst kostet, wie unser Öko-Strom zu Hause, nicht die Welt, trotzdem benötigen Sie einen gültigen und kostenpflichtigen Lizenzschlüssel, den Sie hier erwerben können.

Die Lizenzkosten für den deepl-Service sind nicht in den Kosten für die priint:comet Plugins enthalten.

Bitte beachten Sie, dass TaggedText-formatierter Text für Übersetzungen ungeeignet ist. Inbesondere die Kodierung der Unicode-Zeichen in Tags der Form <0x00FC> führen hier zu Fehlern. Sie sollten hier also nach Möglichkeit unformatierten Text wie er z.B von frame::gettext(gFrame, text, 0, kEnd, kExportPlain); erzeugt wird, verwenden. Allerdings, und das wird Sie hoffentlich nicht überraschen, können wir den übersetzten Text nicht automatisch wieder mit gleichwertigen Formatierungen versehen. Dazu müßten wir (z.B.) nicht nur wissen, dass 'Polizei' auf ungarisch 'Rendőrség' heißt (nun, das immerhin hätten wir gewußt), wir müßten zusätzlich auch wissen, wie das Wort vorher formatiert war und wo im Text es sich jetzt befindet usw. .

Die deepl-Integration basiert auf einer REST-API, die von deepl zur Verfügung gestellt wird und kann nicht beliebig durch einen anderen Übersetzungsdienst ersetzt werden.

Name Typ Default Beschreibung
Return char*   Übersetzter Text

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 char* oder String - Unformatierter Eingabetext
license_key char* oder String - Gültiger deepl Lizenzschlüssel. Diese Schlüssel haben etwa folgendes Format : xxxxxxxxc-xxxx-xxxx-xxxx-xxxxxxxxxxxx
dest_lang char* oder String - Zielsprache, siehe hier
source_lang char* oder String 0 Ausgangssprache, siehe hier

deepl ist in den meisten Fällen in der Lage, die Ausgangssprache selbst zu erkennen. Und da bei einer falsche Ausgangssprache die Übersetzung natürlich nicht funktionieren wird, ist es allgemin besser, die Ausgangssprache nicht anzugeben. Bei einzelnen Worten wie z.B. 'was' kann aber auch deepl nicht entscheiden, welche Sprache gemeint ist. Englisch oder Deutsch? Dann sollten Sie die Ausgangssprache angeben.
#include "internal/text.h"
#include "internal/types.h"
int main() { String txt = string::alloc();
frame::gettext(gFrame, txt, 0, kEnd, kExportPlain); frame::replace(gFrame, text::translate (txt, "xxxxxxxxc-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "SV", ""), 0, -1, 0);
string::release(txt);
return 0; }

v4.2 R33270, 20. Juli 2023

priint:comet InDesign® Plug-Ins

translate

Seit
Plugin Version 1.0.10
Letzte Änderung
30.07.2025, 07:35 Uhr
Autor
Paul Seidel

Alphabetic index HTML hierarchy of classes or Java