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 Function
Esempi 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


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.