Funzione replace
Jump to navigation
Jump to search
#
#File YSAGEDEV
#
#############################################################################
# Author: SageDev.it
# sostituisce tutte le occorrenze di OLD con NEW
# STR è un clob
#############################################################################
Funprog REPLACE(STR, OLD, NEW)
Value Clbfile STR()
Value Char OLD()
Value Char NEW()
Local Integer LENOLD
Local Integer LENNEW
#lunghezza della stringa da sostituire
LENOLD= len(OLD)
#lunghezza della stringa che sostituirà la OLD
LENNEW= len(NEW)
If LENOLD<=0 or LENOLD>len(STR)
#la stringa da sostituire è vuota o è più lunga della stringa iniziale, quindi non sostituisco niente
End STR
Endif
Local Integer INDEX
Local Integer INDEXSTART
#cerco la stringa da sostituire
INDEX=instr(1,STR,OLD)
While INDEX>0
#INDEX>0 significa che è stata trovata una corrispondenza di OLD
#sostituisco l'occorrenza di OLD con la stringa NEW
STR =left$(STR, INDEX-1) + NEW + right$(STR, INDEX+LENOLD)
#calcolo l'indice a cui finisce la stringa NEW inserita
INDEXSTART=INDEX+LENNEW
#cerco la stringa da sostituire a partire dalla fine dell'ultima corrispondenza trovata
INDEX=instr(INDEXSTART,STR,OLD)
Wend
End STR
#############################################################################
#############################################################################
# Author: SageDev.it
# Wrapper di REPLACE(STR, OLD, NEW)
# sostituisce tutte le occorrenze di OLD con NEW
# il parametro STR è un CHAR(), non un clob
#############################################################################
Funprog REPLACESTR(STR, OLD, NEW)
Value Char STR()
Value Char OLD()
Value Char NEW()
Local Char RET(250)
Local Clbfile STRCLB(1)
STRCLB = STR
RET = func YSAGEDEV.REPLACE(STRCLB, OLD, NEW)
End RET
#############################################################################