Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как обрезать строку до нужной длины

Короткий ответ

Возьмите нужное число символов через slice() и добавьте многоточие, если строка была длиннее:

const text = 'A very long article title';
const limit = 13;
 
console.log(text.length > limit ? text.slice(0, limit) + '…' : text);

Результат:

A very long a…

Отдельная функция

Короткая строка возвращается без изменений:

function truncate(text, limit) {
  return text.length > limit ? text.slice(0, limit) + '…' : text;
}
 
console.log(truncate('A very long article title', 13));
console.log(truncate('Short', 13));

Результат:

A very long a…
Short

Не разрывая слово

Обрезайте до последнего пробела перед границей, чтобы слово осталось целым:

const truncateWords = (text, limit) => {
  if (text.length <= limit) return text;
  const cut = text.slice(0, limit);
  const space = cut.lastIndexOf(' ');
  return (space > 0 ? cut.slice(0, space) : cut) + '…';
};
 
console.log(truncateWords('A very long article title', 13));

Результат:

A very long…

Частая ошибка

slice() считает кодовые единицы, поэтому может разрезать эмодзи пополам. Сначала разбейте строку на символы через ...:

const text = 'Hi 👋 there';
 
console.log(text.slice(0, 4));
console.log([...text].slice(0, 4).join(''));

Результат:

Hi �
Hi 👋

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.