Ví 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. */
Danilo é coordenador de interface da AdBat/Tesla, é Corinthiano e Vegan. Gosta de correr, de jogar xadrez, tênis, e futebol de videogame (no futebol de verdade ele é muito ruim). Programa de dia na AdBat/Telsa e de noite no 



March 23rd, 2009 at 12:43 pm
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!
March 23rd, 2009 at 1:46 pm
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! =)
March 31st, 2009 at 12:56 pm
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(“…”);
}
March 31st, 2009 at 12:58 pm
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(“…”);
}
March 31st, 2009 at 12:58 pm
É… não deu certo =(