Turbo Pascal – Le traitement du texte
- Turbo Pascal – Introduction au Turbo Pascal
- Turbo Pascal – Ecrire sur l’écran
- Turbo Pascal – Un peu de maths
- Turbo Pascal – Les commentaires
- Turbo Pascal – Les variables
- Turbo Pascal – Les constantes
- Turbo Pascal – Entrée de données
- Turbo Pascal – Structure conditionnelle
- Turbo Pascal – Les cas
- Turbo Pascal – Branchements
- Turbo Pascal – Les boucles
- Turbo Pascal – Procédures et fonctions
- Turbo Pascal – Les unités
- Turbo Pascal – Les tableaux
- Turbo Pascal – Les maths
- Turbo Pascal – Le traitement du texte
- Turbo Pascal – Affichage du texte
- Turbo Pascal – Le son
- Turbo Pascal – Graphismes
- Turbo Pascal – L’unité Graph et le texte
- Turbo Pascal – Les types personalisés
- Turbo Pascal – Les pointeurs
- Turbo Pascal – Les objets
- Turbo Pascal – Les ensembles
On a vu comment afficher du texte avec write et writeln. Nous allons
maintenant voir comment formater ce texte.
Détail d’une chaîne de caractères
On a vu dans les variables qu’une chaîne de caractères est un tableau
du type
char.Ainsi, n’ayons pas peur d’écrire :
var MyTexte : array[1..5] Of Char; {Un tableau de Char}begin
MyTexte[1] := ‘H’;
MyTexte[2] := ‘e’;
MyTexte[3] := ‘l’;
MyTexte[4] := ‘l’;
MyTexte[5] := ‘o’;
writeln(MyTexte); {Affichage du tableau comme si c’était une chaine}
end. {Sortie -> Hello}
Partant de ce principe, on peut facilement modifier n’importe quel caractère d’une chaîne, du
moment que l’on sait la longueur de la chaîne.
Car rappelons que l’on peut limiter la taille du chaîne de caractères à la déclaration. Si on
indique un index supérieur à sa longueur, une erreur se produit.
L’index 0 de la table correspond à la longueur de la chaîne de caractère. On peut ainsi écrire :
var MyTexte : String;begin
MyTexte := ‘Bonjour le Web!’;
MyTexte[0] := Chr(7); {La chaîne ne fait plus que 7 caractères}
writeln(MyTexte); {Sortie -> Bonjour}
end.
Il existe une multitude de fonctions permettant de triturer du texte :
Concat
Cette fonction permet de concaténer plusieurs chaînes de caractères en une seule.
Elle est équivalente à ces même chaînes « additionnées » :
var MyTexte1 : String;
MyTexte2 : String;
strM1 : String;
strM2 : String;
strM3 : String;begin
strM1 := ‘Salut! ‘;
strM2 := ‘Les copains! ‘;
strM3 := ‘C »est moi!’;MyTexte1 := Concat(strM1, strM2, strM3);
MyTexte2 := strM1 + strM2 + strM3;writeln(’MyTexte1=MyTexte2 : ‘, MyTexte1=MyTexte2); {Affiche TRUE
si les 2 sont identiques}
end.
Copy
Cette fonction retourne une partie bien précise d’une chaîne de caractères en fonction d’une position
specifiée. Voici la syntaxe :
Copy(Chaine : String, Debut : Integer, Long : Integer) : String;
Chaine représente la chaîne dans laquelle extraire les caractères, Debutdéfinit le caractère où commencer la copie et
Long la longueur de la copie :
var MyTexte : String;begin
MyTexte := ‘123456789′;
writeln(Copy(MyTexte, 3, 5)); {Sortie -> 34567}
writeln(Copy(MyTexte, 7, 3)); {Sortie -> 789}
end.
Delete
Cette procédure supprime des caractères d’une chaîne de caractères. Voici la syntaxe :
Delete(Chaine : String, Debut : Integer, Long : Integer);
Chaine représente la chaîne dans laquelle supprimer les caractères, Debutdéfinit le caractère où commencer la suppression et
Long la longueur de la suppression :
var MyTexte : String;begin
{123456789012345678901}
MyTexte := ‘Ceci est un gros trou’;
Delete(MyTexte, 13, 5); {Suppression de 5 caractères}
writeln(MyTexte); {Sortie -> Ceci est un trou}
end.
FillChar
FillChar permet d’inserer un caractère (type
Char) ou un chiffre (type Byte)un nombre de fois spécifiée dans une chaîne de caractères. Voici la syntaxe :
FillChar(Chaine : String, Nombre, Valeur);
FillChar correspond à la chaîne de caractères dans laquelle inserer Nombrede fois
Valeur :
var MyTexte : String[80];begin
FillChar(MyTexte, 80, ‘$’);
writeln(MyTexte); {80 $}
end.
Insert
Cette procédure insere des caractères dans une chaîne de caractères. Voici la syntaxe :
Insert(Source : String, Destination : String, Debut : Integer);
Source représente la chaîne qui va être insérée dans la chaîne Destinationà partir du caractère
Debut :
var MyTexte : String;
MyEnorme : String;begin
MyTexte := ‘Ceci est un trou’;
MyEnorme := ‘enorme ‘;
Insert(MyEnorme, MyTexte, 13); {Insertion de la chaine MyEnorme dans MyTexte}
writeln(MyTexte); {Sortie -> Ceci est un enorme trou}
end.
Pos
Pos effectue la recherche d’une chaîne de caractère dans une autre. Voici sa syntaxe :
Pos(Recherche : String, Chaine : String) : Byte;
Recherche représente l’ocurence à rechercher dans la chaîne Chaine. Lavaleur renvoyée correspond à la position de la chaine
Recherche. En cas d’echec,la valeur renvoyée est 0 :
var MyTexte : String;begin
MyTexte := ‘Ceci est une phrase de sept mots’;
writeln(Pos(’phrase’, MyTexte)); {Sortie -> 14}
end.
Str
Cette procédure permet de convertir une variable numérique en une chaîne de caractères. Voici
la syntaxe :
Str(Nombre : Real, Chaine : String);
Nombre represente la variable numérique et Chaine, la chaîne de destination :
var MyNumber : Real;
MyTexte : String;begin
MyNumber := Pi;
Str(MyNumber, MyTexte);
writeln(MyTexte);
end.
Val
Cette procédure effectue l’opération inverse à la procédure
Str : elle convertitune variable numérique en une chaîne de caractères. Voici la syntaxe :
Val(Chaine : String, Nombre : Real, Code : Integer);
Chaine represente la chaîne de caractère et Nombre, la variable de destination.La variable
Code renvoi un code d’erreur corespondant au caractère fautif de la chaînede caractères en cas d’erreur :
var MyNumber : Real;
MyTexte : String;
MyCode : Integer;begin
MyTexte := ‘123456′;
Val(MyTexte, MyNumber, MyCode);
writeln(MyNumber);
end.
La table de caractères ASCII
La table de caractères ASCII est une table où sont regroupés les 256 caractères (numérotés de
0 à 255) pouvant être utilisés.
On peut afficher ces caractères en maintenant la touche Alt enfoncée et en tapant le code
du caractère désirés.
On peut aussi utiliser la fonction Chr. Cette fonction se charge d’afficher le caractère
ASCII correspondant au rang qui lui est transmis en argument.
Le programme suivant affiche les 256 caractères de la table :
var i : integer;begin
for i := 0 To 255 Do
writeln(Chr(i));
end.
On peut aussi écrire le caractère en utilisant le caractère dièse (#) comme préfixe :
begin
writeln(#177);
end.
La fonction Ord effectue l’opération inverse et renvoi le code correspondant d’un caractère :
begin
writeln(Ord(’A')); {Renvoi 65}
end.
La casse
On peut modifier facilement la casse (MAJUSCULES/minuscules) d’une chaîne de caractères à l’aide
des fonctions suivantes :
StrUpper
Renvoi la chaîne de caractères transmise en argument en majuscules. Nécessite l’unité Strings :
uses strings;begin
writeln(StrUpper(’bonjour’)); {Sortie -> BONJOUR}
end.
StrLower
Renvoi la chaîne de caractères transmise en argument en minuscules. Nécessite l’unité Strings :
uses strings;begin
writeln(StrLower(’BONJOUR’)); {Sortie -> bonjour}
end.
comment extraire un caractaire dans une chaine de caractaire?