9.3 KiB
title | localeTitle |
---|---|
Truncate a String | Усекать строку |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Нам нужно уменьшить длину строки или усечь ее, если она длиннее заданной максимальной длины и добавить ...
до конца. Если это не так долго, мы сохраняем это как есть.
Связанные ссылки
Подсказка: 1
Строки неизменяемы в JavaScript, поэтому нам понадобится новая переменная для хранения усеченной строки.
попытаться решить проблему сейчас
Подсказка: 2
Вам нужно будет использовать метод slice () и указать, с чего начать и где остановиться.
попытаться решить проблему сейчас
Подсказка: 3
Не забывайте, что когда мы усекаем слово, мы также должны учитывать длину, добавленную ...
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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;
}
}
Код Объяснение:
- Сначала мы начинаем с простого утверждения
if
чтобы определить один из трех результатов ... - Если длина строки больше, чем
num
мы хотим усечь, а наша точка усечения не менее трех символов или больше в строке, мы возвращаем срез нашей строки, начиная с символа 0, и заканчиваяnum - 3
. Затем мы добавляем наш'...'
в конец строки. - Однако, если наша длина строки больше, чем
num
ноnum
находится в пределах первых трех символов, нам не нужно считать наши точки символами. Поэтому мы возвращаем ту же строку, что и выше, с одной разницей: конечная точка нашего среза теперь простоnum
. - Наконец, если ни одна из приведенных выше ситуаций не верна, это означает, что наша длина строки меньше, чем наша усечка
num
. Поэтому мы можем просто вернуть строку.
Расширенное решение для кода:
function truncateString(str, num) {
if (str.length <= num) {
return str;
} else {
return str.slice(0, num > 3 ? num - 3 : num) + '...';
}
}
Код Объяснение:
-
Сначала нам нужен оператор 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
.
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Увидеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.