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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.