
original text :
Text$= " coucou toto20 , coucou toto205"
*****************************************************
my procedure
Code: Select all
text2$=dobro_replace(Text$, "toto20" , "Leon" )
*****************************************************coucou Leon , coucou toto205
Purebasic :
Code: Select all
text3$=ReplaceString(Text$,"toto20","Leon")
coucou Leon , coucou Leon5
*****************************************************
my procedure :
[mode Recursif]
ProcedureDLL.s dobro_replace2(chaine$,chaine_cherche$,chaine_remplace$)
; by Dobro
Static extrait1$,pos
If pos= Len (chaine$)
text2$=extrait1$
pos=0 :extrait1$= ""
ProcedureReturn text2$
EndIf
pos=pos+1
extrait1$=extrait1$+ Mid (chaine$,pos,1)
car_avant= Asc ( Mid (chaine$,pos-1,1)) ; le caractere avant
car_apres= Asc ( Mid (chaine$,pos+ Len (chaine_cherche$),1)) ; ) ; le caractere apres
extrait3$= Mid (chaine$,pos, Len (chaine_cherche$)) ; la chaine extraite
If extrait3$=chaine_cherche$
If (car_apres<48 Or (car_apres>57 And car_apres<65) Or (car_apres>90 And car_apres<97) Or car_apres>122 )
If pos>1
If (car_avant<48 Or (car_avant>57 And car_avant<65) Or (car_avant>90 And car_avant<97) Or car_avant>122 )
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
Else
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
EndIf
EndIf
text2$=dobro_replace2(chaine$,chaine_cherche$,chaine_remplace$)
ProcedureReturn text2$
EndProcedure
[mode iteratif]
[Version Library for tailbite]
ProcedureDLL.s dobro_replace2(chaine$,chaine_cherche$,chaine_remplace$)
; by Dobro
For pos=1 To Len (chaine$)
extrait1$=extrait1$+ Mid (chaine$,pos,1)
car_avant= Asc ( Mid (chaine$,pos-1,1)) ; le caractere avant
car_apres= Asc ( Mid (chaine$,pos+ Len (chaine_cherche$),1)) ; ) ; le caractere apres
extrait3$= Mid (chaine$,pos, Len (chaine_cherche$)) ; la chaine extraite
If extrait3$=chaine_cherche$
If (car_apres<48 Or (car_apres>57 And car_apres<65) Or (car_apres>90 And car_apres<97) Or car_apres>122 )
If pos>1
If (car_avant<48 Or (car_avant>57 And car_avant<65) Or (car_avant>90 And car_avant<97) Or car_avant>122 )
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
Else
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
EndIf
EndIf
Next pos
text2$=extrait1$
pos=0 :extrait1$= ""
ProcedureReturn text2$
EndProcedure
Global text2$
ProcedureDLL.s dobro_replace(chaine$,chaine_cherche$,chaine_remplace$)
; by Dobro
For pos=1 To Len (chaine$)
extrait1$=extrait1$+ Mid (chaine$,pos,1)
car_avant= Asc ( Mid (chaine$,pos-1,1)) ; le caractere avant
car_apres= Asc ( Mid (chaine$,pos+ Len (chaine_cherche$),1)) ; ) ; le caractere apres
extrait3$= Mid (chaine$,pos, Len (chaine_cherche$)) ; la chaine extraite
If extrait3$=chaine_cherche$
If (car_apres<48 Or (car_apres>57 And car_apres<65) Or (car_apres>90 And car_apres<97) Or car_apres>122 )
If pos>1
If (car_avant<48 Or (car_avant>57 And car_avant<65) Or (car_avant>90 And car_avant<97) Or car_avant>122 )
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
Else
extrait1$= Left (extrait1$, Len (extrait1$)-1)
extrait1$=extrait1$+chaine_remplace$
pos=pos+ Len (chaine_cherche$)-1
EndIf
EndIf
EndIf
Next pos
text2$=extrait1$
pos=0 :extrait1$= ""
ProcedureReturn text2$
EndProcedure
[call sample : for lib ]
Text$ = "aa Test_Procedure20(coucou) bb Test_Procedure205 (coucou) cc Test_Procedure20 (coucou) cc Test_Procedure20" + Chr (13)+ Chr (10)+ "(coucou)"
Debug dobro_replace(Text$, "Procedure20" , "xxx" )