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.
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
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:
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
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
Link sponsorizzati inseriti nella pagina.
Random Post
PUBBLICITÀ
Disclaimer:
|
Copyright:
|