Cut a string after n characters, but if it's in the middle of a word cut the whole word

Dan Barzilay picture Dan Barzilay · May 25, 2012 · Viewed 17.2k times · Source

I'm trying to make a JS function that cuts a string after n characters - that works. The problem is if it's in the middle of a word it looks bad, so I need your help making it cut the whole word if it's the middle of it.

My code so far:

if($('#desc').text().length > 505){
  str = $("#desc").text();
  $('#desc').text(str.substring(0, 505)).append('...');
}

P.S

  • #desc is the div that contains my string.
  • you can use jQuery.

Answer

Bergi picture Bergi · May 25, 2012
function cut(n) {
    return function textCutter(i, text) {
        var short = text.substr(0, n);
        if (/^\S/.test(text.substr(n)))
            return short.replace(/\s+\S*$/, "");
        return short;
    };
}
$('#desc').text(cut(505));