Как обрезать строку в JavaScript

первоначально опубликовано на hellodevworld.com

С Днем 6! Сегодня мы возвращаемся к истокам. Эту задачу можно легко применить как к интерфейсу, так и к серверу.

Отказ от ответственности: существует МНОЖЕСТВО способов решить эту проблему. Это ответ, который я увижу или использую на собеседовании по программированию и приму как правильный ответ.

TLDR: решение находится внизу сообщения.

Проблема

Создайте функцию, которая принимает строку и число. Функция должна вернуть заданную строку, усеченную до максимальной длины (число, которое было передано), за которой следует "...". Если строка короче переданной максимальной длины, вернуть переданную строку.

Пример:

truncate('It works on my machine', 8) // 'It works...'
        truncate('It’s not a bug – it’s an undocumented feature', 14) // 'It’s not a bug...'
truncate('In order to understand recursion, one must first understand recursion', 'In order to understand recursion, one must first understand recursion'.length) // 'In order to understand recursion, one must first understand recursion'
truncate('The cheapest, fastest, and most reliable components are those that aren’t there', 82) //'The cheapest, fastest, and most reliable components are those that aren’t there'

Решение

Итак, что нам нужно сделать?

  • создать функцию, которая принимает строку и число
  • проверить, не превышает ли длина строки лимит, который был пройден
  • если это так, получите подстроку ограничения и добавьте «…»
  • если не вернуть строку

Сначала нам нужно создать функцию, которая принимает строку и число.

function truncate(string,limit){
  //check if the string’s length is greater than the limit that was passed
  //if so get the substring of the limit and append “…”
  //if not return the string
}

Нам нужно проверить, больше ли длина переданной строки, чем число, которое было передано в

function truncate(string,limit){
    if(string.length > limit){
      //get the substring of the limit and append "..."
    }else{
      //return the string
    }
}

Если длина больше, нам нужно получить подстроку строки, которая была передана до предела, который был передан. Если вы не знакомы с .substr(), ознакомьтесь с этой статьей MDN.

.substr() получает подстроку строки, к которой она привязана, на основе двух переданных чисел. С этими двумя числами он получает буквы между каждым из этих индексов. Таким образом, в нашем случае мы хотим, чтобы начало строки соответствовало максимальному количеству символов, которое мы можем иметь, поэтому substr (0, limit), но если бы нам нужна была только вторая буква до четвертой буквы, это была бы substr (1, 3). Они отличаются на одно число, потому что индексы строк индексируются 0, поэтому число начинается с 0 вместо 1, поэтому первая буква — это индекс 0, вторая буква — это индекс 1 и т. д. и т. д.

function truncate(string,limit){
    if(string.length > limit){
      string.substr(0, limit) + "..."
    }else{
      //return the string
    }
}

В противном случае мы просто хотим вернуть строку

function truncate(string,limit){
    if(string.length > limit){
      string.substr(0, limit) + "..."
    }else{
      return string
    }
}

если вы хотите сделать его немного короче, вы можете написать его и так

function truncate(string, limit){
  if(string.length > limit) string =  string.substr(0, limit) + "..."
  return string
}

Теперь, если мы хотим немного почистить это, используя шаблонные литералы и тернарные коды, мы получим это!

function truncate(string,limit){
    return string.length > limit ? `${string.substr(0,limit)}...` : string;
}

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