freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/truncate-a-string/index.md

9.3 KiB
Raw Blame History

title localeTitle
Truncate a String Усекать строку

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Нам нужно уменьшить длину строки или усечь ее, если она длиннее заданной максимальной длины и добавить ... до конца. Если это не так долго, мы сохраняем это как есть.

Связанные ссылки

:speech_balloon: Подсказка: 1

Строки неизменяемы в JavaScript, поэтому нам понадобится новая переменная для хранения усеченной строки.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

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

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Не забывайте, что когда мы усекаем слово, мы также должны учитывать длину, добавленную ...

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

function truncateString(str, num) { 
  // Clear out that junk in your trunk 
  if (str.length > num && num > 3) { 
    return str.slice(0, (num - 3)) + '...'; 
  } else if (str.length > num && num <= 3) { 
    return str.slice(0, num) + '...'; 
  } else { 
    return str; 
  } 
 
 } 

:rocket: Код запуска

Код Объяснение:

  • Сначала мы начинаем с простого утверждения if чтобы определить один из трех результатов ...
  • Если длина строки больше, чем num мы хотим усечь, а наша точка усечения не менее трех символов или больше в строке, мы возвращаем срез нашей строки, начиная с символа 0, и заканчивая num - 3 . Затем мы добавляем наш '...' в конец строки.
  • Однако, если наша длина строки больше, чем num но num находится в пределах первых трех символов, нам не нужно считать наши точки символами. Поэтому мы возвращаем ту же строку, что и выше, с одной разницей: конечная точка нашего среза теперь просто num .
  • Наконец, если ни одна из приведенных выше ситуаций не верна, это означает, что наша длина строки меньше, чем наша усечка num . Поэтому мы можем просто вернуть строку.

:rotating_light: Расширенное решение для кода:

function truncateString(str, num) { 
  if (str.length <= num) { 
    return str; 
  } else { 
    return str.slice(0, num > 3 ? num - 3 : num) + '...'; 
  } 
 } 

:rocket: Код запуска

Код Объяснение:

  • Сначала нам нужен оператор if, чтобы проверить, прошла ли длина полной строки, поскольку первый аргумент уже вписывается в ограничение размера, переданное в качестве второго аргумента. Если это так, мы можем просто вернуть строку, которая была передана.

    if (str.length <= num) return str;

  • Если наш оператор if выше не работает, мы переходим к else , где мы собираемся вернуть «срез» строки. Метод slice извлекает секцию строки и возвращает новую строку. Здесь мы передаем 0 как отправную точку для нашего среза. Чтобы определить конечную точку, мы используем тернарный оператор: num > 3 ? num - 3 : num . В нашем тройном, если num больше 3, мы должны учитывать три точки по нашей общей длине, и, таким образом, мы заканчиваем наш срез на num-3 . Если num меньше или равно 3, наш срез получает конечную переменную только num . Наконец, '...' добавляется к концу нашей новой строки и возвращается.

    } else { return str.slice (0, num> 3? num - 3: num) + '...'; }

  • ПРИМЕЧАНИЕ. Чтобы понять приведенный выше код, вам нужно понять, как работает Тернарный оператор. Тернарный оператор часто используется как ярлык для оператора if и следует за этим форматом: condition ? expr1 : expr2 . Если condition принимает значение true, оператор возвращает значение expr1 . В противном случае он возвращает значение expr2 .

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Увидеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.