Самый эффективный способ обрезать имя файла в JavaScript - PullRequest
0 голосов
/ 30 октября 2019

Мне было интересно, как обрезать имя файла в JS, чтобы оно показывало "..." или любое другое приложение после определенного количества символов, наиболее эффективный способ обработки всех возможных тестовых случаев.

Правила

  1. Показывать фактическое расширение файла, а не последний символ после разделения имени строки на «.»
  2. Функция должна принимать имя входного файла(строка), количество символов для обрезки (целое число) и приложение (строка) в качестве параметра.
  3. Под эффективностью я подразумеваю, что я ожидаю написать меньше строк кода и обработать все возможные крайние случаи.

Примеры входных данных

  1. myAwesomeFile.min.css
  2. my Awesome File.tar.gz
  3. file. png

Ожидаемый вывод (скажем, я хочу обрезать после 5 символов)

  1. myAwe .... min.css
  2. my Aw .... tar.gz
  3. file.png

Редактирование вопроса, чтобы показать мою попытку

function trimFileName(str, noOfChars, appendix) {
  let nameArray = str.split(".");
  let fileType = `.${nameArray.pop()}`;
  let fileName = nameArray.join(" ");

  if (fileName.length >= noOfChars) {
    fileName = fileName.substr(0, noOfChars) + appendix;
  };

  return (fileName + fileType);
}

console.log(trimFileName("myAwesomeFile.min.css", 5, "..."));
console.log(trimFileName("my Awesome File.tar.gz", 5, "..."));
console.log(trimFileName("file.png", 5, "..."));

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

Редактировать # 3: Добавил еще несколько деталей к вопросу после новых комментариев. Я знаю, что моя попытка не соответствует ожидаемым результатам (и я не уверен, является ли вывод, который я перечислил выше, стандартным ожиданием или нет).

Редактировать # 4 (Финал): Убрано правило не разбивать слово посередине после непрерывной обратной реакции в комментариях и изменено правило, чтобы удовлетворить более реалистичные и практичные варианты использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...