Prendendo spunto dallo script #438 - Evidenziare un testo nei risultati di una ricerca con le regular expression in .Net la evidenziazione risulta più facile e potente.
Infatti le classi del Framework ci mette a disposizione il namespace
System.Text.RegularExpressions che ci permette di ottenere lo stesso risultato ma con delle varianti molto interessanti.
Visto lo script #438 essofa una replace del testo che noi gli passiamo indipendentemente da come esso sia formattato, cioè se è tutto maiuscolo, minuscolo o sole le iniziali.
La Regular non fa altro che trovare il testo e sostituirlo con quello che gli passiamo, ma se abbiamo l'esigenza di
evidenziare solo quelli che hanno l'iniziale maiuscola oppure evidenziare il testo ma lasciarlo come è stato
scritto oppure rendere tutto maiuscolo o minuscolo come facciamo?
la Replace della classe Regex in uno dei suoi metodi in overload ci da la possibilità di definire un Delegante,
ciòè una funzione che faccia il lavoro definita da Noi.
La funzione delegante si chiama MatchEvaluator e si occupa di analizare ogni occorenza trovata dal metodo Replace,
quindi possiamo analizzare ogni singola parola e trattarla a nostro piacimento.
StrDoc -> contiene il testo a cui applichiamo una ricerca
Pattern -> è la stringa che dobbiamo cercare
Colora -> è la funzione delegante che si occupa di trattare ogni singola parola
reOpt -> sono le opzioni che possiamo aggiungere (vedi MSDN)
StrDoc = Regex.Replace(StrDoc, Pattern, AddressOf Me.Colora, reOpt)
La Funzione colora non fa altro che analizzare le parole trovate.
Private Shared Function Colora(ByVal m As Match) As String
Return "" & m.Value & "" ' in questo modo lascia le parole come sono state scritte
End Function
Oppure possiamo rendere la prima lettera maiuscola
Private Shared Function Colora(ByVal m As Match) As String
Dim x As String = m.ToString()
' verifico se il primo carattere è minuscolo, se è così lo rendo maiuscolo
If Char.IsLower(x.Chars(0)) Then
Return Char.ToUpper(x.Chars(0)) & x.Substring(1, x.Length - 1)
End If
Return x
End Function
Il prossimo vedremo la funzione Group.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download
10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!