Page 1 sur 1

Recherche astuce manipulation de chaine

Posté : lun. 18 juin 2007, 15:55:20
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.

(sans texte)

Posté : mer. 20 juin 2007, 10:36:44
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 ...

%replace

Posté : mer. 20 juin 2007, 17:30:27
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;