General |
6.55 Effettuare sostituzioni di una sottostringa all'interno di una stringa per n volte. |
Vincenzo Turturro |
Function StrTran(st As String, stSubst As String, nSubst As Integer, iLR As Byte, Optional stNew As String) As String 'Autori: Antonella Romeo & Vincenzo Turturro 'Funzione per effettuare sostituzioni di una sottostringa all'interno di una ' stringa per n volte, sia a partire da sinistra, sia a partire da destra 'Parametri in ingresso: ' st Stringa in cui effettuare la sostituzione ' stSubst Stringa da sostituire con stNew ' nSubst Numero di sostituzioni da effettuare (0 = tutte le occorrenze) ' iLR Switch per il conteggio delle occorrenze a partire da sx (0: default) o da dx (1) ' stNew Stringa da utilizzare per la sostituzione 'Valore restituito: ' La stringa risultante dalle sostituzioni effettuate Dim i As Integer, nSubstCount As Integer, stTemp As String ' Inizializza i parametri se non passati st = Nz(st, "") stSubst = Nz(stSubst, "") stNew = Nz(stNew, "") nSubst = Nz(nSubst, 0) iLR = Nz(iLR, 0) nSubstCount = 0 ' Se richiesto sostituzione a partire da dx, ribalta la stringa in cui effettuare la sostituzione stTemp = "" If iLR = 1 Then For i = Len(st) To 1 Step -1 stTemp = stTemp & Mid$(st, i, 1) Next i st = stTemp stTemp = "" For i = Len(stSubst) To 1 Step -1 stTemp = stTemp & Mid$(stSubst, i, 1) Next i stSubst = stTemp stTemp = "" For i = Len(stNew) To 1 Step -1 stTemp = stTemp & Mid$(stNew, i, 1) Next i stNew = stTemp End If For i = 1 To Len(st) If nSubst > 0 And nSubstCount = nSubst Then Exit For End If If InStr(1, st, stSubst) > 0 Then st = Left$(st, InStr(1, st, stSubst) - 1) & stNew & Mid$(st, InStr(1, st, stSubst) + Len(stSubst)) End If nSubstCount = nSubstCount + 1 Next i ' Se richiesto sostituzione a partire da dx, ribalta la stringa in cui è stata effettuata la sostituzione stTemp = "" If iLR = 1 Then For i = Len(st) To 1 Step -1 stTemp = stTemp & Mid$(st, i, 1) Next i st = stTemp End If StrTran = st End FunctionEsempi di utilizzo: StrTran("pippo e pippo","pippo",0,0,"minnie") -> minnie e minnie StrTran("pippo e pippo","pippo",1,0,"minnie") -> minnie e pippo StrTran("pippo e pippo","pippo",1,1,"minnie") -> pippo e minnie |