Texte (text)
  text est le type des chaînes de caractères en Scriptol. C'est un objet doté de méthodes.
 Un text littéral est une chaîne de caractères enclose entre simples ou doubles guillemets.
Il y a une différence entre les deux notations, que l'on verra par ailleurs.

Syntaxe:

text s
s = "str"
s = s[i]
s[i] = s2
s = s[i..j]
s[i..j] = s
s[i..j] = ""
crée un texte.
initialise.
prend un caractère.
remplace un caractère, s2 a un seul caractère.
prend une sous-chaîne, de i jusqu'à j inclus.
remplace une sous-chaîne.
supprime une sous-chaîne.


Concaténation

Le symbole + peut être utilisé aussi avec les textes, et il représente la concaténation de deux textes.

Exemples de concaténation text t = "préfixe"
print t + "suffixe"
Affiche: > préfixesuffixe


Multi-lignes

Si un texte est trop long et ne tient pas dans l'écran, le symbole + permet de le fractionner:
Example:
text t = "C'est un texte qui est plutôt " +
            "long"

En fait il est possible de fractionner un littéral de texte sur plusieurs lignes et de l'assigner, ou de l'utiliser dans une expression:
text t = "C'est un texte qui est plutôt "
            "long"


Guillemets dans le texte

Supposons que vous voulez assigner la variable a avec exactement ce texte:

ma "jolie" voiture.

Vous ne pouvez le mettre entre guillemets:

a = "ma "jolie" voiture"

Le compilateur ne saura comment le traiter! Un code special est utilisé pour dire que les guillemet sont dans le texte plutôt qu'ils ne le délimitent, c'est "\"

a = "ma \"jolie\" voiture"

Vous pouvez aussi alterner les types de guillemets:

a = "ma 'jolie' voiture"
ou
a = 'ma "jolie" voiture'

Mais cela convient quand le langage cible est Php, pas en C++.


Codes d'échappement

Pour les caractères qui ne peuvent être placés directement dans un texte, on utilise le code spécial antislash: \
L'antishlash est nécesaire pour insérer différent caractères de contrôle:
\n ceci est un saut de ligne.
\t ceci est une tabulation.

Par exemple pour afficher un guillement, on écrira:
"abc\"def"
Les codes \" insèrent un guillemet dans la séquence de caractères.
Il en est de même pour les codes spéciaux:


\" insérer un guillemet
\' insérer une apostrophe
\n code de retour à la ligne
\t code de tabulation
\\ insérer l'anti-slash lui-même.
Liste des caractères nécessitant l'échappement dans un text


Le $ a une fonction spéciale, dans les guillemets doubles, lorsque la langage cible est Php, il permet d'insérer le contenu d'une variable.

Exemple de variable en texte: text t = "demo"
a = "une $t"
print a
Affiche: > une demo

Pour afficher le symbole $ quand le language généré est Php (cela fonction avec C++ aussi), utiliser les apostrophes .
print '$hello'
affiche: $hello.

Il en est de même avec les symboles { }.


Expressions textuelles


 Les opérateurs de texte sont:
=, <, >, <=, >=



+
[]
in
comparaison de deux textes.
retourne 0 si identiques.
-1 si le premier est alphabétiquement inférieur.
1 si le premier est alphabétiquement supérieur.
concaténation de deux textes.
indexation, slicing ou splicing
teste si un text fait partie d'un autre.

Les méthodes de texte


Les méthodes s'appliquent à une variable ou à un littéral non divisé, sous la forme:
"string".method()
Retour Méthode Fonction
text capitalize() met la première lettre en majuscule.
int compare(text) compare lexicographiquement deux textes (ignore maj). retourne -1, 0, 1.
text dup(int) retourne un texte dupliqué n fois. Ex: "*".dup(10).
void fill(text, int) remplit avec un texte dupliqué n fois.
int find(text s2) retourne la position du texte s2 dans le texte, retourne "nil" si non trouvé. (tester si = nil car <> nil ne va pas en Php)
int identical(text) compare, différencie maj/min. Retourne -1, 0, 1
void insert(int, text) insère un texte à la position donnée.
boolean isNumber() retourne "true" si le texte contient un nombre.
int len
length()
retourne la longueur.
text lower() met en minuscules.
text lTrim() supprime blancs et codes de contrôle au début.
text replace(ft, rt) remplace chaque occurence de ft par rt.
void reserve(int) alloue la taille donnée pour faire une mémoire tampon.
text rTrim() supprime blancs et codes de contrôle en fin.
array split(sep) découpe le texte en mots séparés par sep.
int toInt() convertit en entier.
natural toNatural() convertit en naturel.
real toReal() convertit en réel.
text toText() cast une chaîne littérale en text (pour C++).
text trim() supprime blancs et codes de contrôle en début et fin.
text upper() met en majuscules.
text wrap(int size) mots non coupés.
 
    
 Exercices
1) Mettre en capitale la première lettre des mots du texte suivant:
text t = "un monde parfait"
Les mots sont toujours séparés par un blanc unique. Utilisez les méthodes
- de texte array split(text), mentionné dans la table ci-dessus.
- et de tableau text join(text) qui crée un text avec les éléments d'un tableau.
L'argument est le séparateur de mots dans les deux cas.
Ne pas oublier de convertir un élément de tableau qui est un dyn, en text (méthode toText()).
Afficher le texte modifié.

Réponse