Il metodo Replace di un oggetto stringa è case-sensitive, cioè tiene conto delle lettere maiuscole-minuscole. Per esempio, provate a eseguire questo codice:
Dim str As String = "Testo da Sostituire"
str = str.Replace("sostituire", "cancellare")
MessageBox.Show(str)
str = str.Replace("Sostituire", "cancellare")
MessageBox.Show(str)
Il risultato visualizzato dalla prima MessageBox sarà uguale alla stringa originale, perché “Sostituire” è diverso da “sostituire”, mentre con la seconda MessageBox otterremo effettivamente la sostituzione desiderata, perché abbiamo specificato esattamente la stringa così come appare nel testo originale.
Da questo esempio desumiamo che il metodo Replace è “case sensitive”, cioè tiene conto dei caratteri maiuscoli-minuscoli.
Come fare, quindi, a sostituire una stringa all’interno di un’altra stringa senza tenere conto della differenza maiuscole-minuscole, cioè quello che in inglese è definito “case insensitive”?
Possiamo per una volta scomodare le espressioni regolari: intendiamoci, non dobbiamo utilizzare strane sequenze di caratteri che a prima vista sembrano geroglifici. Basta utilizzare il metodo … Replace! Più facile di così… Il codice per ottenere questo risultato è il seguente:
Dim str As String = _
"trova PaRoLa e sostituisci con parola"
Dim strReplace As String = "parola"
str = Regex.Replace(str, "parola", _
strReplace, RegexOptions.IgnoreCase)
MessageBox.Show(str)
Attenzione che per utilizzare le espressioni regolari, dobbiamo anche importare il relativo namespace:
Imports System.Text.RegularExpressions
In questo caso vedremo che il risultato è perfettamente adatto al nostro scopo.