Если только пробелы, то самый простой вариант.
function kitcut(text, limit) {
text = text.trim();
if( text.length <= limit) return text;
text = text.slice(0, limit);
return text.trim() + "...";
}
Если ещё нужно игнорировать определённые символы, то проще идти с конца. Пример функции:
var str = 'Test text. Hello, world!!!!,..,';
var z = getLastIndexWithoutIgnore(str, ['!', ',', '.']);
console.log( 'Index: %s, string: %s', z, str.slice(0, z+1) );
// => Index: 22, string: Test text. Hello, world
function getLastIndexWithoutIgnore(text, ignoreArr) {
for(var i = text.length-1; i >= 0; i--) {
if(ignoreArr.indexOf(text[i]) === -1) {
return i;
}
}
return 0;
}