1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
unit FonctionsChaine;
interface
function droite(substr: string; s: string): string;
function DroiteDroite(substr: string; s: string): string;
function gauche(substr: string; s: string): string;
function GaucheDuDernier(substr: string; s: string): string;
function NbSousChaine(substr: string; s: string): integer;
function NDroite(substr: string; s: string;n:integer): string;
function GaucheNDroite(substr: string; s: string;n:integer): string;
function StrReplace(Substr,replace,s:string):string;
implementation
function StrReplace(Substr,replace,s:string):string;
{============================================================================}
{remplace toutes les sous-chaines Substr par replace }
{ ex : StrReplace ('toto', 'tata', 'le toto est ..') renvoie 'le tata est ..'}
{============================================================================}
var ChaineSource,ChaineCible:string;
i,TailleChaineRemplacement:integer;
begin
ChaineSource:=s;
ChaineCible:='';
TailleChaineRemplacement:=length(Substr);
while pos(Substr,ChaineSource)>0 do //tant que l'on trouve une sous-chaine
begin
i:=pos(Substr,ChaineSource)-1; // position de la sous-chaine à remplacer
ChaineCible:=ChaineCible+copy(ChaineSource,1,i)+replace;
delete(ChaineSource,1,i+TailleChaineRemplacement);//on retire de chaineTemp
end;
Result:=ChaineCible+ChaineSource;
end;
function droite(substr: string; s: string): string;
{============================================================================}
{Renvoie ce qui est à droite d'une sous chaine de caractères }
{ ex : Droite('aa', 'phidelsaacom') renvoie com }
{============================================================================}
begin
if pos(substr,s)=0 then result:='' else
result:=copy(s, pos(substr, s)+length(substr), length(s)-pos(substr, s)+length(substr));
end;
function droiteDroite(substr: string; s: string): string;
{============================================================================}
{ fonction qui renvoie la sous chaine de caractère situè à droite de la sous }
{ chaine substr située la plus à droite }
{ ex: si substr = '\' et S= 'truc\tr\essai.exe droiteDroite renvoie essai.exe}
{============================================================================}
begin
Repeat
S:=droite(substr,s);
until pos(substr,s)=0;
result:=S;
end;
function gauche(substr: string; s: string): string;
{============================================================================}
{ fonction qui renvoie la sous chaine de caractère situè à gauche de la sous }
{ chaine substr }
{ ex: si substr = '\' et S= 'truc\tr\essai.exe' gauche renvoie truc }
{============================================================================}
begin
result:=copy(s, 1, pos(substr, s)-1);
end;
function GaucheDuDernier(substr: string; s: string): string;
{============================================================================}
{ fonction qui renvoie la sous chaine de caractère situèe à gauche de la }
{dernière sous chaine substr }
{ ex: si substr = '\' et S= 'truc\tr\essai.exe' gauche renvoie truc\tr }
{============================================================================}
var
s1:string;
i:integer;
begin
s1:='';
for i:=1 to NbSousChaine(substr, s)-1 do
begin
s1:=s1+gauche(substr,s)+substr;
s:=droite(substr,s);
end;
s1:=s1+gauche(substr,s);
result:=s1;
end;
function NbSousChaine(substr: string; s: string): integer;
{==================================================================================}
{ renvoie le nombre de fois que la sous chaine substr est présente dans la chaine S}
{==================================================================================}
begin
result:=0;
while pos(substr,s)<>0 do
begin
S:=droite(substr,s);
inc(result);
end;
end;
function NDroite(substr: string; s: string;n:integer): string;
{==============================================================================}
{ renvoie ce qui est à droite de la n ieme sous chaine substr de la chaine S }
{==============================================================================}
var i:integer;
begin
for i:=1 to n do
begin
S:=droite(substr,s);
end;
result:=S;
end;
function GaucheNDroite(substr: string; s: string;n:integer): string;
{==============================================================================}
{ renvoie ce qui est à gauche de la droite de la n ieme sous chaine substr }
{ de la chaine S }
{ ex : GaucheNDroite('/','c:machin\truc\essai.exe',1) renvoie 'truc' }
{ Permet d'extraire un à un les éléments d'une chaine séparés par un séparateur}
{==============================================================================}
var i:integer;
begin
S:=S+substr;
for i:=1 to n do
begin
S:=copy(s, pos(substr, s)+length(substr), length(s)-pos(substr, s)+length(substr));
end;
result:=copy(s, 1, pos(substr, s)-1);
end;
end. |
Partager