Recherche astuce manipulation de chaine

RPG (3 et 4, free), CL, SQL, etc...
Répondre
davbail
Messages : 5
Enregistré le : jeu. 22 mars 2007, 14:43:06

Recherche astuce manipulation de chaine

Message par davbail »

Bonjour,

Je recherche une astuce, en RPG, pour pouvoir remplacer dans une chaine de caractère un caractère par une suite de caractère.

Par exemple, je souhaite remplacer le caractère ' par deux fois le caractère '.
concraitement la chaine : Vive l'été ! deviendrait Vive l''été !

J'aimerai bien faire cela sans être obligé de parcourir toute ma chaine, m'arrêter quand je trouve mon caractère à remplacer, remplacer le caractère par ma suite de caractères et concaténer ma nouvelle chaine avec la fin de mon ancienne chaine....

Existe t'il une fonction style %REPLACE pour faire cela ?

Merci de vos réponses.

steph
Messages : 5
Enregistré le : mar. 27 févr. 2007, 14:15:28

(sans texte)

Message par steph »

Pour le %replace je ne sais pas par contre tu peux essayer avec

%Scan qui te permet de savoir si ton ' est présent et à partir de quel position x

ensuite avec le %Subst tu recompose ta zone libelle (
lib = %subst(lib:1: x-1) + '"' + %subst(lib:x+6:y-x-10)
ou y est la longueur de ton lib

le probleme est que tu remplace une zone de (1 C) par une zone de (2C) donc tu risque de perdre une partie de ton libelle ...

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

%replace

Message par cmasse »

la fonction %replace existe sous la forme

Code : Tout sélectionner

%REPLACE('nouvelle-chaine' : variable : position-actuelle: nb-de-car-remplacés)
En effet on fournit la position (et non la valeur) de la chaîne remplacée.

par exemple

Code : Tout sélectionner

debut = 1;
dou pos = 0 or debut > %size(variable);
  pos = %scan('''' : variable : debut);
  if pos > 0;
     variable = %replace('''''' : variable : pos : 1);
     debut = pos + 2;
  endif;
enddo;
Christian Massé (Volubis.fr)

Répondre