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 |
|