Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Recherche astuce manipulation de chaine

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
davbail



Inscrit le: 22 Mar 2007
Messages: 5

MessagePosté le: Lun 18 Juin 2007, 15:55:20    Sujet du message: Recherche astuce manipulation de chaine Répondre en citant

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.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
steph



Inscrit le: 27 Fév 2007
Messages: 5

MessagePosté le: Mer 20 Juin 2007, 10:36:44    Sujet du message: (sans texte) Répondre en citant

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 ...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 691
Localisation: Nantes

MessagePosté le: Mer 20 Juin 2007, 17:30:27    Sujet du message: %replace Répondre en citant

la fonction %replace existe sous la forme

Code:
%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:

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)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots