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. */

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Você pode se interessar também por:

5 Responses to “Truncar texto em javascript – Abreviar sem cortar palavras”

  1. 1
    Chris Benseler Says:

    Opá, Daniel! Bem bacana!

    Resolvi usar a sua função para criar um método na classe String do javascript.
    Coloquei o código, com os devidos créditos, no outro blog (http://www.odesenvolvedor.com.br) onde escrevo:

    http://www.andafter.org/blogs/odesenvolvedor/publicacoes/adicionar-metodo-de-truncar-texto-em-javascript-a-classe-string_957.html

    Abraços!

  2. 2
    Leonardo A. Souza Says:

    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! =)

  3. 3
    Leonardo A. Souza Says:

    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(“…”);
    }

  4. 4
    Leonardo A. Souza Says:

    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(“…”);
    }

  5. 5
    Leonardo A. Souza Says:

    É… não deu certo =(

Leave a Reply