formatCutoff
Eigenständige Funktion zum Abschneiden von Strings mit sprachabhängigen Abschlusszeichen
Übersicht
Die eigenständige Funktion formatCutoff kürzt Strings mit passenden, locale‑spezifischen Abschlusszeichen, ohne dass eine GT‑Instanz erforderlich ist.
Sie bietet locale‑bewusste Textkürzung, die die Konventionen verschiedener Sprachen für Auslassungszeichen und Leerzeichen berücksichtigt.
import { formatCutoff } from 'generaltranslation';
const formatted = formatCutoff('Hello, world!', {
locales: 'en-US',
maxChars: 8
});
// Gibt zurück: "Hello, w…"Referenz
Parameters
| Name | Type | Description |
|---|---|---|
value | string | Der zu kürzende String |
options | CutoffFormatOptions & { locales?: string | string[] } | Konfiguration für das Kürzen |
CutoffFormatOptions
| Name | Type | Description |
|---|---|---|
locales? | string | string[] | Locales für die Auswahl des Terminators |
maxChars? | number | Maximale Anzahl anzuzeigender Zeichen. undefined bedeutet kein Cutoff. Negative Werte schneiden vom Ende her ab |
style? | 'ellipsis' | 'none' | Terminator-Stil. Standard ist 'ellipsis' |
terminator? | string | Benutzerdefinierter Terminator, der die Locale-Standardeinstellungen überschreibt |
separator? | string | Benutzerdefiniertes Trennzeichen zwischen Terminator und Text |
Rückgabewert
string - Die gekürzte Zeichenfolge mit einem geeigneten Abschlusszeichen.
Verhalten
Zeichenlimit
- Positives
maxChars: Kürzt vom Anfang, hängt Abschlusszeichen an - Negatives
maxChars: Schneidet vom Ende ab, stellt Abschlusszeichen voran maxCharsgleich 0: Gibt einen leeren String zurück- Undefiniertes
maxChars: Es erfolgt keine Kürzung
Lokalspezifische Auslassungszeichen
Unterschiedliche locales verwenden unterschiedliche Ellipsen-Konventionen:
- Französisch:
…mit schmalem geschützten Leerzeichen (\u202F) - Chinesisch/Japanisch: Doppelte Ellipse
……ohne Trennzeichen - Standard: Einfache Ellipse
…ohne Trennzeichen
Edge Cases
- Wenn die Länge von Terminator + Separator
maxCharsüberschreitet, wird ein leerer String zurückgegeben - Eine ursprüngliche Zeichenfolge, die kürzer als
maxCharsist, wird unverändert zurückgegeben - Der
'none'-Stil kürzt ohne Terminator
Beispiele
Grundlegende Verwendung
import { formatCutoff } from 'generaltranslation';
// Einfaches Kürzen
console.log(formatCutoff('Hello, world!', {
locales: 'en-US',
maxChars: 8
}));
// Ausgabe: "Hello, w…"
// Kein Kürzen erforderlich
console.log(formatCutoff('Short', {
locales: 'en-US',
maxChars: 10
}));
// Ausgabe: "Short"Negative Zeichenlimits
// Ausschnitt vom Ende
console.log(formatCutoff('Hello, world!', {
locales: 'en-US',
maxChars: -3
}));
// Ausgabe: „…ld!"
// Größerer negativer Ausschnitt
console.log(formatCutoff('JavaScript', {
locales: 'en-US',
maxChars: -6
}));
// Ausgabe: „…Script"Locale-spezifische Abschlusssymbole
// Französische Formatierung
console.log(formatCutoff('Bonjour le monde', {
locales: 'fr-FR',
maxChars: 10
}));
// Ausgabe: "Bonjour\u202F…" (schmales Leerzeichen vor Auslassungszeichen)
// Chinesische Formatierung
console.log(formatCutoff('你好世界', {
locales: 'zh-CN',
maxChars: 3
}));
// Ausgabe: "你好……"
// Japanische Formatierung
console.log(formatCutoff('こんにちは', {
locales: 'ja-JP',
maxChars: 4
}));
// Ausgabe: "こん……"Benutzerdefinierte Trennzeichen
// Benutzerdefinierter Terminator
console.log(formatCutoff('Long text here', {
locales: 'en-US',
maxChars: 10,
terminator: '...'
}));
// Ausgabe: „Long te..."
// Benutzerdefinierter Terminator mit Trennzeichen
console.log(formatCutoff('Another example', {
locales: 'en-US',
maxChars: 12,
terminator: '[more]',
separator: ' '
}));
// Ausgabe: „Anoth [more]"
// Kein Terminator
console.log(formatCutoff('Clean cut', {
locales: 'en-US',
maxChars: 5,
style: 'none'
}));
// Ausgabe: „Clean"Hilfsfunktionen
import { formatCutoff } from 'generaltranslation';
// Für UI-Anzeige abschneiden
function displayText(text: string, maxLength: number, locale = 'en-US') {
return formatCutoff(text, {
locales: locale,
maxChars: maxLength
});
}
// Mehrsprachiges Abschneiden
function truncateByLocale(text: string, locale: string) {
const limits = {
'en': 50,
'de': 45, // Deutsche Wörter sind tendenziell länger
'zh': 30, // Chinesische Zeichen sind kompakter
};
return formatCutoff(text, {
locales: locale,
maxChars: limits[locale] || 50
});
}
console.log(displayText('This is a very long description', 15));
// Ausgabe: "This is a ve…"
console.log(truncateByLocale('Eine sehr lange deutsche Beschreibung', 'de'));
// Ausgabe: "Eine sehr lange deutsche Besch…"Hinweise
- Im Gegensatz zur GT-Klassenmethode ist der Parameter
localesoptional und standardmäßig auf'en'gesetzt - Ergebnisse werden intern zwischengespeichert, um die Performance bei wiederholten locale/options‑Kombinationen zu verbessern
- Die Länge des Terminators wird bei der Berechnung der Zeichenobergrenze berücksichtigt
- Benutzerdefinierte Terminatoren überschreiben locale-spezifische Standardwerte
- Separatoren werden ignoriert, wenn kein Terminator vorhanden ist
Nächste Schritte
- Verwende die GT-Klasse
formatCutofffür die instanzbasierte Nutzung - Sieh dir weitere Formatierungsfunktionen wie
formatMessagean - Nutze
formatNumzur Zahlenformatierung
Wie ist diese Anleitung?