Replacement de chaine
Replacement de chaine
Quelqu'unj connait t-il la solution pour faire un remplacement globale d'une chaine
Exemple Chaine d'origine " ABCDEBCR"
Chaine à remplacer "B" par "F"
Avec Pure Basic Chaine résultatnte "= " AFCDEBCR"
Avec visaul basic et Instr --> les deux B ayant été remplacés par F
Chaine résultante "AFCDEFCR"
La fonction StringReplace de PureBasic n'agissant que sur la premiére occurence et pas sur les suivantes
Merci par avance
Exemple Chaine d'origine " ABCDEBCR"
Chaine à remplacer "B" par "F"
Avec Pure Basic Chaine résultatnte "= " AFCDEBCR"
Avec visaul basic et Instr --> les deux B ayant été remplacés par F
Chaine résultante "AFCDEFCR"
La fonction StringReplace de PureBasic n'agissant que sur la premiére occurence et pas sur les suivantes
Merci par avance
Extrait de la Doc:
Exemple:
Code : Tout sélectionner
Syntaxe
String$ = ReplaceString(Chaine$, ChaineCherchee$, ChaineRemplacee$ [, Mode [, PositionDepart]])
Description
Substitue toutes les occurences de 'ChaineCherchee$' trouvées dans 'Chaine$' par 'ChaineRemplacee$'.
Exemple:
Code : Tout sélectionner
chaine_origine$= " ABCDEBCR"
ChaineCherchee$="B"
ChaineRemplacee$="F"
chaine_resultante$ = ReplaceString(chaine_origine$, ChaineCherchee$, ChaineRemplacee$)
Debug chaine_resultante$
Code : Tout sélectionner
debug "Erreur"
Dernière modification par julien le dim. 25/avr./2004 19:19, modifié 1 fois.
Remplacement de chaine
Le seul problême dans mon cas c'est que je manipule des chaines supérieures à 64 K° et que dans ce cas là la fonction StringReplace plante le logiciel PUREBASIC. Quelqu'un connait-il une parade ?
Manipulation de chaîne
Nico , nous ne sommes pas là pour nous invetciver mais au contraire pour nous aider mutuellement, et quand on est débutant en Pure Basic toutes les réponses sont bones à prendre
ce n'est pas un problème de la fonction mais de la variable puisque ceci plante
Code : Tout sélectionner
debug "Encore une erreur"
Dernière modification par julien le dim. 25/avr./2004 19:19, modifié 1 fois.
Ce code à été rééditer:
Code : Tout sélectionner
Procedure Remplace_Chaine(Fichier.s,ChaineCherchee$,ChaineRemplacee$)
#Fichier=0
#FichierTempraire=1
;Ici on cré un fichier temporaire sous le même répertoire
For a= Len(Fichier) To 1 Step -1
If Mid(Fichier, a, 1) ="\"
FichierTemporaire.s=Mid(Fichier, 1,a)+"Temporaire.temp"
;Debug Fichier2
Break
EndIf
Next a
If CopyFile(Fichier,FichierTemporaire)
If OpenFile(#FichierTempraire, FichierTemporaire)
If CreateFile(#Fichier, Fichier)
While Eof(#FichierTempraire)=0
UseFile(#FichierTempraire)
chaine$=ReadString()
chaine_resultante$ = ReplaceString(chaine$, ChaineCherchee$, ChaineRemplacee$)
UseFile(#Fichier)
WriteStringN(chaine_resultante$)
Wend
CloseFile(#Fichier)
retour.b=#True
EndIf
CloseFile(#FichierTempraire)
;Le fichier temporaire est une copie du fichier original
;vous pouvez le supprimer avec ces lignes:
;If DeleteFile(FichierTemporaire)=0
; MessageRequester("Info","Le fichier Temporaire n'a pu être supprimer")
;EndIf
EndIf
EndIf
ProcedureReturn retour
EndProcedure
Chemin$ = OpenFileRequester("Choisir un fichier", "", "Fichier texte (*.txt) |*.txt|All Files|*.*", 0)
If Chemin$
;Exemple pour remplacer mercredi par jeudi sur toutes les occurences.
If Remplace_Chaine(Chemin$,"mercredi","jeudi")
MessageRequester("Info","opération réussi")
EndIf
EndIf
Dernière modification par nico le dim. 25/avr./2004 20:20, modifié 3 fois.
voilas
Code : Tout sélectionner
Procedure ReplaceLargeString(*s1, len.l, k.l, s2.s, s3.s)
If k > len
ProcedureReturn -1
EndIf
res = -1
ll = Len(s2)
Repeat
te.s = Mid(PeekS(*s1), k, ll)
If te = s2
*s1 + k + ll - 1
PokeS(*s1 + k -1 - k - ll + 1, s3 + PeekS(*s1))
res = 1
EndIf
k + 1
Until k > len
ProcedureReturn res
EndProcedure
*test = AllocateMemory(80000)
PokeS(*test, "testt hatt kitattitato")
s.s = "tt"
ss.s = "bkb"
Debug ReplaceLargeString(*test, 80000, 0, s, ss)
Debug PeekS(*test)