Truncar texto em javascript – Abreviar sem cortar palavras

um post do Igor Escobar mostrando uma função de truncar palavras em php. Aí eu lembrei que um dia precisei fazer isso em javascript e resolvi postar tal função.

A função tem dois parâmetros, o texto e o limite de caracteres, e retorna sempre o texto com “…” no final. Veja a função:

function truncar(texto,limite){
	if(texto.length>limite){	
		limite--;
		last = texto.substr(limite-1,1);
		while(last!=' ' && limite > 0){
			limite--;
			last = texto.substr(limite-1,1);
		}
		last = texto.substr(limite-2,1);
		if(last == ',' || last == ';'  || last == ':'){
			 texto = texto.substr(0,limite-2) + '...';
		} else if(last == '.' || last == '?' || last == '!'){
			 texto = texto.substr(0,limite-1);
		} else {
			 texto = texto.substr(0,limite-1) + '...';
		}
	}
	return texto;
}

Agora vamos fazer uns testes:

var mensagem = "O técnico do Corinthians até elogiou a atuação de Rodrigo Martins Cintra.";

alert(truncar(mensagem,70));
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo Martins... */

alert(truncar(mensagem,60));
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo... */

alert(truncar(mensagem,50));
/* Retorno = O técnico do Corinthians até elogiou a atuação... */

alert(truncar(mensagem,40));
/* Retorno = O técnico do Corinthians até elogiou a... */

alert(truncar(mensagem,30));
/* Retorno = O técnico do Corinthians até... */

alert(truncar(mensagem,20));
/* Retorno = O técnico do... */

alert(truncar(mensagem,80)); 
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo Martins Cintra. */

6 thoughts on “Truncar texto em javascript – Abreviar sem cortar palavras

  1. Eu estava agora mesmo indo fazer uma função para fazer isso! Ainda bem que parei para ler meus feeds antes, me poupou um bom tempo! Muito obrigado! =)

  2. Precisei de uma função parecida com a sua em Java. Para quebrar prioritariamente frases inteiras. Modificando um pouco sua função fiquei com isso:

    public static String smartTrunc(String str, int n) {
    if(str.length() 0;i–){
    char last = str.charAt(i);
    if (last == ‘.’ || last == ‘!’ || last == ‘?’ || last == ‘;’)
    return str.substring(0, i+1);
    }
    for(int i=n-1;i>0;i–){
    char last = str.charAt(i);
    if (last == ‘,’ || last == ‘:’)
    return str.substring(0, i).concat(“…”);
    }
    for(int i=n-1;i>0;i–){
    char last = str.charAt(i);
    if (last == ‘ ‘)
    return str.substring(0, i).concat(“…”);
    }
    return str.substring(0, n-4).concat(“…”);
    }

  3. Eita… o WordPress ferrou com a escrita:

    Vou tentar de novo:

    public static String smartTrunc(String str, int n) {
    if(str.length() 0;i–){
    char last = str.charAt(i);
    if (last == ‘.’ || last == ‘!’ || last == ‘?’ || last == ‘;’)
    return str.substring(0, i+1);
    }
    for(int i=n-1;i>0;i–){
    char last = str.charAt(i);
    if (last == ‘,’ || last == ‘:’)
    return str.substring(0, i).concat(“…”);
    }
    for(int i=n-1;i>0;i–){
    char last = str.charAt(i);
    if (last == ‘ ‘)
    return str.substring(0, i).concat(“…”);
    }
    return str.substring(0, n-4).concat(“…”);
    }

Leave a Reply

Your email address will not be published. Required fields are marked *