Il Metodo Replace di VB.NET

Come primo articolo del blog vorrei cominciare da qualcosa di facile: La funzione Replace.

Cosa fa? Data una Stringa Expression sostituisce tutte le occorrenze della Stringa Find con quelle della stringa Replacement.

Dim Str As String = "Wamba è Brutto" 'Dichiaro una stringa con un evidete errore di battitura :)

Str = Replace(Str , "Brutto", "Bello" 'Correggo l'errore

Console.WriteLine(Str )  'Stampa "Wamba è Bello"

Ovviamente esitono parametri opzionali aggiuntivi, per l'approfondimento potete consultare MSDN.

Ora veniamo al succo dell'articolo:

Dobbiamo realizzare una funzione che esegua la sostituzione di una sottostringa e restituisca il risultato in maiuscolo:

Public Function ReplaceAndUpper(ByVal ToFormatString As String)

ToFormatString = Replace(ToFormatString, "Brutto", "Bello")   ' Sostituisco il testo

ToFormatString = ToFormatString.ToUpper  'Lo Rendo Maiuscolo

Return ToFormatString

End Function

Adesso costruiamo la funzione Main con la chiamata

Sub Main()

Dim Str As String = "Wamba è Brutto"

Console.WriteLine(ReplaceAndUpper(Str))

Str = ""

Console.WriteLine(ReplaceAndUpper(Str))

Console.ReadLine()

End Sub

Come vedete ci sono due chiamate a ReplaceAndUpper, la prima contiene un testo e la seconda una stringa vuota. La seconda chiamata genera un'eccezione Object reference not set to an instance of an object. Perchè? Se entrate eseguite le operazioni StepByStep vedrete che il risultato di ToFormatString = Replace(ToFormatString, "Brutto", "Bello") quando ToFormatString vale "" è nothing! Ovviemente l'istruzione seguente ToFormatString.ToUpper genera l'eccezione.

Come Risolvere il Problema:

Utiliziamo il metodo String.Replace(Find , Replacement) e tutto fila liscio.

Public Function ReplaceAndUpper(ByVal ToFormatString As String)

ToFormatString = ToFormatString.Replace("Brutto", "Bello")

ToFormatString = ToFormatString.ToUpper

Return ToFormatString

End Function

Nota Finale:

Ho un forte sospetto che il metodo String.Replace() sia anche più veloce, ma non ho mai controllato. Appena fatto il test vi farò sapere.

Wamba

posted @ domenica 11 febbraio 2007 14:32

Print
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011