Limitare il testo di una stringa con una Regular Expression per ASP

di Massimiliano Mattei, in Classic ASP, UserScript, Regular Expression,

Spesso nei nostri applicativi, abbiamo la necessità di mostrare solo una anteprima di un testo completo.
Questo può essere il caso di un sistema di content management, dove si vogliono mostrare solo le prime righe del contenuto di un articolo, oppure l'anteprima della descrizione di un prodotto in una piattaforma e-commerce.
In queste situazioni, è più gradevole presentare all'utente una anteprima che non spezzi le parole a metà, dopo un certo numero di caratteri, ma che preservi le parole intere, prima di effettuare il troncamento della stringa originale.

Questa è una piccola funzione in VBScript, utilizzabile quindi in Classic ASP (per la versione ASP.NET, si veda #591), che vi permette di ottenere questo risultato grazie all'utilizzo delle regular expression di VBScript, aggiungendo "..." laddove la stringa viene effettivamente spezzata.

<%

Function strStripString(strInput, intStrip)
  Dim objRegExp, objMatch
  Dim strTemp

  If Len(strInput) > intStrip Then
    Set objRegExp = New RegExp
    objRegExp.Global = True
    objRegExp.IgnoreCase = True
    objRegExp.Pattern  = "[\s\S]{1," & intStrip & "}\b"
    Set objMatch = objRegExp.Execute(strInput)
    If objMatch.Count > 0 Then strTemp = RTrim(objMatch.Item(0).Value) & "..."
    Set objMatch = Nothing
    Set objRegExp = Nothing
  Else
    strTemp = strInput
  End If

  strStripString = strTemp
End Function

%>

I parametri in ingresso della funzione sono strInput, che è la stringa originale e intStrip che è il numero di caratteri entro i quali vogliamo definita la lunghezza della stringa troncata.
Questo significa che se una parola inizia entro il limite di caratteri stabilito, ma termina dopo, quella parola verrà esclusa.

Il cuore della funzione è objRegExp.Pattern = "[\s\S]{1," & intStrip & "}\b"

In sostanza stiamo definendo la nostra regular expression, in modo che il matching contenga tutti i caratteri [\s\S] compresi i caratteri di line-feed o di tabulazione (per questo viene utilizzato [\s\S] anzichè semplicemente '.' che escluderebbe tali caratteri).
Tutti i caratteri quindi, entro un intervallo massimo {1,n} purchè il termine del match coincida con la fine di una parola \b.
Viene infine utilizzata la funzione di RTrim per non includere eventuali spazi al termine dell'ultima parola ed vengono poi aggiunti i puntini "..." ad indicare che il testo è solo un'anteprima.

Per informazioni più dettagliate sul significato dei meta caratteri del pattern, vi suggerisco:
http://www.allfreetech.com/ShowMain.asp?MainID=90

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

Nessuna risorsa collegata

I più letti di oggi