Как обрезать строку до нужной длины
Короткий ответ
Возьмите нужное число символов через 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 👋Функции из этого ответа
- String.prototype.slice — Возвращает часть строки.