awilum.ru
Статьи Курсы Об авторе

Умное обрезание строк в JavaScript

В JavaScript существует несколько способов реализации умного обрезания строк, которые позволяют сохранять целостность слов и при этом обеспечивают нужную длину строки.

Метод slice()

Метод slice() используется для извлечения части строки и возвращает новую строку без изменения оригинала. Он принимает два аргумента: начальный и конечный индексы для извлечения подстроки.

function smartTrim(str, maxLength) {
    if (str.length <= maxLength) return str;
    let trimmedString = str.slice(0, maxLength);
    
    // Найдем последний пробел в обрезанной строке
    let lastSpaceIndex = trimmedString.lastIndexOf(' ');
    
    // Обрежем строку до последнего пробела
    if (lastSpaceIndex !== -1) {
        trimmedString = trimmedString.slice(0, lastSpaceIndex);
    }
    
    return trimmedString + '...';
}

let longString = "Lorem ipsum dolor sit amet consectetur adipiscing elit.";

console.log(smartTrim(longString, 30)); // Lorem ipsum dolor sit amet...

В этом примере smartTrim() обрезает строку до указанной длины, но также обеспечивает, чтобы строка не была обрезана посередине слова.

Метод substring()

Метод substring() также используется для извлечения части строки, но он принимает два аргумента: начальный индекс и индекс конца подстроки.

function smartTrim(str, maxLength) {
    if (str.length <= maxLength) return str;
    let trimmedString = str.substring(0, maxLength);
    let lastSpaceIndex = trimmedString.lastIndexOf(' ');
    if (lastSpaceIndex !== -1) {
        trimmedString = trimmedString.substring(0, lastSpaceIndex);
    }
    return trimmedString + '...';
}

let longString = "Lorem ipsum dolor sit amet consectetur adipiscing elit.";

console.log(smartTrim(longString, 30)); // Lorem ipsum dolor sit amet...

Обратите внимание, что метод substring() работает аналогично методу slice(), но не поддерживает отрицательные индексы.

Использование регулярных выражений

Еще один способ умного обрезания строк - использование регулярных выражений для поиска последнего пробела перед указанной длиной строки.

function smartTrim(str, maxLength) {
  if (str.length <= maxLength) return str;
  let trimmedString = str.substring(0, maxLength);
  trimmedString = trimmedString.replace(/\s+\S*$/, '');
  return trimmedString + '...';
}

let longString = "Lorem ipsum dolor sit amet consectetur adipiscing elit.";

console.log(smartTrim(longString, 30)); // Lorem ipsum dolor sit amet...

В этом примере мы используем регулярное выражение \s+\S*$, чтобы найти последний пробел перед указанной длиной строки и удалить все символы после него.

Хотите освоить JavaScript и стать востребованным разработчиком?
Присоединяйтесь к курсу JavaScript Базовый уровень прямо сейчас!
Изучите основы и продвинутые концепции, создавайте интерактивные веб-приложения и воплотите свои идеи в реальности. Не упустите шанс стать экспертом в мире разработки – начните свой путь прямо сейчас!
Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!