Sostituire una substring con un’altra – Codice VB.NET

Sostituire o eliminare in una stringa una substring con un’altra (o con una stringa vuota) a scelta del programmatore.

L’esigenza di dover sostituire parti di un testo o comunque di stringhe si fa spesso sentire: ad esempio si potrebbe voler eliminare tutti i caratteri non stampabili oppure sostituire alla parola “pippo” la parola “cavallo”. Ovviamente esistono metodi più sofisticati, tuttavia il codice seguente può essere di aiuto. La funzione di base pensata da IngAC per sostituire una substring in una stringa è: Private Function IngAC_STRINGHE_RIMPIAZZA(string_input As String, string_search As String, string_replace As String) As String , che sostituisce solo la prima occorrenza della “string_search”, mentre quella deputata allo scopo di scovare e rimpiazzare tutte le occorrenze della “string_search” nella string_input è la:  Public Function IngAC_STRINGHE_RIMPIAZZA_TUTTE(string_input As String, string_search As String, string_replace As String) As String

[codesyntax lang=”vbnet”]

    REM =================================================================
    Private Function IngAC_STRINGHE_RIMPIAZZA(string_input As String, string_search As String, string_replace As String) As String
        IngAC_STRINGHE_RIMPIAZZA = string_input
        If string_input IsNot Nothing And string_search IsNot Nothing Then
            Dim string_input_len As Integer = string_input.Length
            Dim string_search_len As Integer = string_search.Length
            If string_input_len >= string_search_len Then
                Dim string_search_pos As Integer = InStr(string_input, string_search) 
                If string_search_pos = 0 Then Return string_input 
                Dim Sub_string_1 As String = Strings.Left(string_input, string_search_pos - 1)
                Dim Sub_string_2 As String = Strings.Right(string_input, string_input_len - string_search_pos - string_search_len + 1)
                IngAC_STRINGHE_RIMPIAZZA = Sub_string_1 & string_replace & Sub_string_2
            End If
        End If
    End Function
    REM =================================================================
    Public Function IngAC_STRINGHE_RIMPIAZZA_TUTTE(string_input As String, string_search As String, sAs String) As String
        IngAC_STRINGHE_RIMPIAZZA_TUTTE = string_input
        Dim tmp_prima As String = string_input
        Dim tmp_dopo As String = ""
        Do
            tmp_dopo = IngAC_STRINGHE_RIMPIAZZA(tmp_prima, string_search, string_replace)
            If tmp_prima = tmp_dopo Then
                Return tmp_dopo
            Else
                tmp_prima = tmp_dopo
            End If
        Loop
    End Function

[/codesyntax]

Input delle due funzioni per sostituire una substring

La funzione IngAC_STRINGHE_RIMPIAZZA_TUTTE ha per input, cosi come la funzione  IngAC_STRINGHE_RIMPIAZZA i seguenti parametri:

  • string_input : è la stringa di origine, nella quale si vuole sostituire una substring (string) o un carattere qualsiasi (char);
  • string_search: è la stringa da ricercare nella string_input; può essere sia un singolo carattere sia una stringa. Se la lunghezza supera quella della string_input viene restituita la stringa di partenza, senza modifiche;
  • string_replace: è la stringa che verrà messa al posto della string_search. Può essere anche una stringa vuota e in questo caso la funzione diventa: IngAC_STRINGHE_RIMUOVI_TUTTE, il cui codice è semplicemente:
    [codesyntax lang=”vbnet”]

     Public Function IngAC_STRINGHE_RIMUOVI_TUTTE(string_input As String, string_search As String) As String
            Return IngAC_STRINGHE_RIMPIAZZA_TUTTE(string_input, string_search, "")
     End Function

    [/codesyntax]

Descrizione delle funzioni per sostituire una substring

Il cuore della IngAC_STRINGHE_RIMPIAZZA è instr che restituisce la posizione della prima occorrenza della string_search: con semplici calcoli si determinano due sottostringhe, una che precede e una che segue la string_search: in output viene restituita la loro somma. La IngAC_STRINGHE_RIMPIAZZA_TUTTE  è soltanto un loop dal quale si esce quando non ci sono più occorrenze delle string_search: in output restituisce una stringa “pulita” dalla presenza della string_search.

Link utili

Sostituire una substring - Codice VB.NET

Sostituire una substring – Codice VB.NET

You may also like...