In acest tutorial puteti invata cum sa extrageti in JavaScript un anumit numar de caractere, sau cuvinte de la inceputul unui text.
- Ca sa obtineti primele "n" caractere dintr-un sir-text este usor, se foloseste functia JavaScript:
substr().
Exemplu:
<script>
var text = 'Extrage textul cu primele 40 caractere din acest sir. Lectii si tutoriale PHP-MySQL - marplo.net/';
var txt = text.substr(0, 40); // Extrage textul cu primele 40 caractere
// test
alert(txt); // Extrage textul cu primele 40 caractere d
</script>
- Primul caracter are index 0.
Extrage un numar de cuvinte specificat
Dupa cum se observa in exemplu de sus, cand se extrage un anumit numar de caractere, ultimul cuvant poate fi taiat.
Daca aveti un text din care doriti sa preluati o portiune (un subsir), si sa adaugati la el un buton cu "Citeste restul...", e mai bine ca ultimul cuvant sa fie retinut asa cum e, intreg. In acest caz vom extrage in loc de caractere un numar specific de cuvinte.
Cuvintele sunt separate prin spatiu, astfel, se poate folosi o expresie regulata care sa reprezinte un sir cu un numar specific de spatii, egal cu numarul de cuvinte ce trebuie preluat (
/([^ ]*[ ]{0,1}){1, nr}/g ), apoi se aplica functia JavaScript:
match() cu expresia regulata ca sa obtinem subsirul.
- Pentru a ne asigura ca avem doar un singur spatiu intre cuvinte, vom aplica inainte acest cod:
text.replace(/\s\s+/g, ' ') - inlocuieste mai multe spatii goale cu un singur caracter spatiu.
Iata exemplu cu acelasi text:
<script>
var text = 'Extrage textul cu primele 40 caractere din acest sir. Lectii si tutoriale PHP-MySQL - marplo.net/';
var nrw = 8; // numarul de cuvinte ce trebuie extras
var rgxwords = new RegExp('([^ ]*[ ]{0,1}){1,'+nrw+'}', 'g'); // expresia regulata cu nr. de spatii
text = text.replace(/\s\s+/g, ' '); // inlocuieste spatii multiple cu un singur spatiu
var txt = text.match(rgxwords)[0]; // obtine subsirul cu "nrw" numar de cuvinte
// test
alert(txt); // Extrage textul cu primele 40 caractere din acest
</script>
Sterge tag-uri
Daca in continutul text sunt tag-uri HTML, cand va fi extras un subsir din acel text, este foarte posibil sa ramana tag-uri deschise care vor afecta formatul continutului cand acel subsir e adaugat in pagina. In acest caz e mai bine ca tag-urile sa fie sterse inainte de extragerea portiunii de text.
Ca sa stergeti tag-urile dintr-un sir, se poate folosi codul:
text.replace(/\<[^\>]*\>/gi, '') .
-
Exmplu, stergere tag-uri si preluare un anumit numar de caractere:
<script>
var text = 'Continut text <i class="cls">cu tag-uri HTML</i>. Cursuri gratuite: <b>www.coursesweb.net/</b>';
text = text.replace(/\<[^\>]*\>/gi, ''); // sterge tag-urile
var txt = text.substr(0, 30); // Extrage textul cu primele 30 caractere
// test
alert(txt); // Continut text cu tag-uri HTML.
</script>
-
Exmplu, stergere tag-uri si preluare un anumit numar de cuvinte:
<script>
var text = 'Continut text <i class="cls">cu tag-uri HTML</i>. Cursuri gratuite: <b>www.coursesweb.net/</b>';
var nrw = 6; // numarul de cuvinte ce trebuie extras
var rgxwords = new RegExp('([^ ]*[ ]{0,1}){1,'+nrw+'}', 'g'); // expresia regulata cu nr. de spatii
text = text.replace(/\<[^\>]*\>/gi, ''); // sterge tag-urile
text = text.replace(/\s\s+/g, ' '); // inlocuieste mai multe spatii cu un singur spatiu
var txt = text.match(rgxwords)[0]; // obtine subsirul cu "nrw" numar de cuvinte
// test
alert(txt); // Continut text cu tag-uri HTML. Cursuri
</script>