Limitare il testo di una stringa con una Regular Expression

di Cristian Civera, in UserScript, ASP.NET, C#,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi