Spesso quando mostriamo dati prelevati da un database per non compromettere il layout di una pagina HTML siamo costretti a dover tagliare del testo e prelevare solo un massimo di caratteri.
L'operazione non è semplicissima poiché troncare le parole verso la fine dei caratteri disponibili non è elegante e perciò dobbiamo prestare attenzione a questo aspetto.
Mediante l'uso delle Regular Expressions possiamo eseguire questo lavoro in due righe di codice. L'esempio mostra due stringhe, una che non eccede la dimensione massima e l'altra che lo fa:
<%@ Page language="c#" debug="true" %> <%@ Import namespace="System.Text.RegularExpressions" %> <script runat="server"> private Regex r = new Regex(@"(?s)\b.{1,28}\b", RegexOptions.Compiled); private string splitText(string fullText) { string m = r.Match(fullText).Value; if (m.Length < fullText.Length) m += "..."; return m; } </script> <%=splitText("questo è il testo numero uno") %> <%=splitText("questo è un altro testo non completo") %>
Il risultato sarà:
questo è il testo numero uno
questo è un altro testo non ...
Il pattern utilizzato è "(?s)\b.{1,28}\b":
(?s) abilita l'opzione SingleLine perché i caratteri di ritorno a capo non devono influire; ciò che è tra i caratteri \b (boundary) indica che ciò che viene "matchato" deve essere una o più parole intere. In questo caso indichiamo, qualsiasi carattere (.) da un minimo di uno ad un massimo di 28 ({1,28}). Ovviamente dovrete cambiare 28 col numero che voi necessitate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.