Chaînes de caractères
Un sur-ensemble, correct au point de code, des chaînes de Python et de Rust ; la lacune nette est la couche locale d'ICU.
6 Strong · 4 Solid · 1 Partial · 1 Emerging
Mesuré contre : ICU · Rust/Python str · Boost.Locale · Dossiers : base/string(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

Repensé depuis les premiers principes
Ce que Softanza a gardé de ce qui marche, et ce qu'elle a repensé, tel que la bibliothèque l'a écrit dans ses documents de conception et ses narrations.
La manière SoftanzaUne chaîne est une suite de caractères qu'une personne lit, comptés en points de code Unicode, jamais en octets stockés par la machine.
Gardé des meilleures pratiques
- Les règles de casse viennent du standard Unicode via utf8proc : une recherche insensible à la casse ramène l'allemand ß à ss, sans astuce limitée à l'ASCII. source(s'ouvre dans un nouvel onglet)
- Les espaces suivent Unicode, qui en définit plus de vingt-cinq : rogner une chaîne retire aussi les espaces insécables et idéographiques. source(s'ouvre dans un nouvel onglet)
- L'identité suit Unicode : deux caractères ne sont égaux que si leurs points de code coïncident ; les sosies latins, grecs et cyrilliques restent distincts et repérables. source(s'ouvre dans un nouvel onglet)
Repensé
- Chaque position et chaque longueur se comptent en points de code, non en octets : l'hébreu, l'arabe ou un emoji ne sont jamais coupés en plein caractère. source(s'ouvre dans un nouvel onglet)
- Les positions commencent à 1, comme on compte d'habitude, à tous les niveaux, moteur compilé compris, ce qui élimine toute une famille d'erreurs de décalage. source(s'ouvre dans un nouvel onglet)
- La chaîne vide n'est jamais comptée, trouvée, contenue, remplacée ni retirée, car une correspondance sur « rien » peut effacer en silence un vrai caractère. source(s'ouvre dans un nouvel onglet)
- La sensibilité à la casse est un paramètre d'une seule fonction, pas une fonction jumelle, ce qui divise par deux le nombre de fonctions à apprendre. source(s'ouvre dans un nouvel onglet)
Softanza's string is one Zig engine (utf8proc + PCRE2 + SheenBidi/HarfBuzz) behind a 2,212-method Haro face that is codepoint-correct end to end and reaches from core slicing through similarity, formatting and text analytics: a genuine superset of Python/Rust str. What it deliberately is not is ICU: no locale collation, no CLDR, no legacy charset transcoding.
Ce qu'un artisan en fait, et ce qui se distingue
- A genuine superset of Python/Rust str on breadth and Unicode-correctness
- Between/sections finder vocabulary wider than any str library exposes
- A similarity and distance lane that ICU does not even enter
- Formatting and text-analytics lanes general str libraries do not have
Ce qui est dû
- Locale-aware collation + CLDR foundation (ICU's crown jewel)
- Finish the narration audit: ~736 of 999 blocks unproven
- Legacy charset transcoding (Shift-JIS, GBK, ISO-8859-*, Windows-125x)
- Grapheme-cluster cursor (UAX#29) and line-break (UAX#14) primitives
La manière Softanza, exécutée
Ce que Softanza fait autrement dans ce domaine, montré par du code tiré de ses narrations et de ses gardes, et exécuté pour cette page.
La chaîne vide n'est jamais contenue, pas même en elle-même : une correspondance sur rien ne peut déclencher aucune modification.
? Q("").Contains("")
? Q("").Contains("text")
? Q("text").Contains("")0 0 0
exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/doc/narrations/stzstring-emptiness-narration.md(s'ouvre dans un nouvel onglet)
La longueur compte des caractères, pas des octets : le mot accentué héllo a cinq caractères alors qu'il occupe six octets.
Then("NumberOfChars('héllo') is 5 (not byte count)", Q("héllo").NumberOfChars(), 5) THEN NumberOfChars('héllo') is 5 (not byte count) [PASS]exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/string/00_string_narrated.ring(s'ouvre dans un nouvel onglet)
Trois lettres d'apparence identique se distinguent par leurs points de code et leurs écritures : latine, grecque et cyrillique.
? AreEqual(["O", "Ο", "О"]) ? Unicodes(["O", "Ο", "О"]) ? Scripts(["O", "Ο", "О"])
0 79 927 1054 latin greek cyrillic
exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/doc/narrations/stz-unmasking-unicode-lookalities-narration.md(s'ouvre dans un nouvel onglet)
Les articles de ce domaine (11)
- InsertSubstrings(): A Powerful String Manipulation Tool in Softanza 2024
- Softanza: Simplifying the Power of C++ Backends for Unicode Handling 2024
- An overview of String Art support in Softanza 2024
- Visual Sequence Finding in Softanza 2024
- Five Practical Applications on Strings of the / Operator in Softanza 2024
- Emptiness in Strings, Clear Rules: The Softanza Way 2024
- Simplifying Orientation in String Removal with Softanza 2024
- Mastering Precision with the Sit() Function 2024
- Decoding Duplicates: Exploring Duplicate Detection and Removal with Softanza 2024
- Managing Over Spaces in Softanza: Beyond Simplify, Trim, and RemoveSpaces 2024
- Unmasking Unicode Lookalikes 2024
Les couloirs, un par un
Les couloirs et leurs notes sont cités tels qu'ils ont été lus à la source, le Read from the source on 2026-09-16.

