mario.deghetto

Visual Basic & .NET
posts - 319, comments - 204, trackbacks - 0

#53: Sostituzione case-insensitive di una stringa all’interno di altra stringa

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.

Print | posted on domenica 14 febbraio 2010 5.18 |

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 4 and 2 and type the answer here:

Powered by: