en.javascript.info/1-js/4-data-structures/3-string/3-truncate/solution.md
2015-03-10 12:36:58 +03:00

1.1 KiB
Raw Blame History

Так как окончательная длина строки должна быть maxlength, то нужно её обрезать немного короче, чтобы дать место для троеточия.

//+ run
function truncate(str, maxlength) {
  if (str.length > maxlength) {
    return str.slice(0, maxlength - 3) + '...';
    // итоговая длина равна maxlength
  }

  return str;
}

alert( truncate("Вот, что мне хотелось бы сказать на эту тему:", 20) );
alert( truncate("Всем привет!", 20) );

Можно было бы написать этот код ещё короче:

//+ run
function truncate(str, maxlength) {
  return (str.length > maxlength) ?
    str.slice(0, maxlength - 3) + '...' : str;
}

P.S. Кстати, в кодироке Unicode существует специальный символ "троеточие": (HTML: …), который можно использовать вместо трёх точек. Если его использовать, то можно отрезать только один символ.