Как обрезать строку до N символов в Javascript? - PullRequest
125 голосов
/ 18 сентября 2011

Как я могу, используя Javascript, создать функцию, которая будет обрезать строку, переданную в качестве аргумента, до указанной длины, также переданной в качестве аргумента. Например:

var string = "this is a string";
var length = 6;
var trimmedString = trimFunction(length, string);

// trimmedString should be:
// "this is"

У кого-нибудь есть идеи? Я что-то слышал об использовании подстроки, но не совсем понял.

Ответы [ 5 ]

264 голосов
/ 18 сентября 2011

Почему бы просто не использовать подстроку ... string.substring(0, 7); Первый аргумент (0) является отправной точкой. Второй аргумент (7) является конечной точкой (исключая). Подробнее здесь.

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);
36 голосов
/ 27 августа 2015

Копирование комментария Уилла в ответ, потому что я нашел его полезным:

var string = "this is a string";
var length = 20;
var trimmedString = string.length > length ? 
                    string.substring(0, length - 3) + "..." : 
                    string;

Спасибо Уилл.

И jsfiddle для всех, кому небезразлично https://jsfiddle.net/t354gw7e/:)

11 голосов
/ 24 марта 2017

Я предлагаю использовать расширение для аккуратности кода. Обратите внимание, что расширение прототипа внутреннего объекта может потенциально связываться с библиотеками, которые зависят от них.

String.prototype.trimEllip = function (length) {
  return this.length > length ? this.substring(0, length) + "..." : this;
}

И используйте это как:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)
7 голосов
/ 19 сентября 2011
1 голос
/ 24 января 2019

Немного поздно ... Я должен был ответить.Это самый простой способ.

// JavaScript
function fixedSize_JS(value, size) {
  return value.padEnd(size).substring(0, size);
}

// JavaScript (Alt)
var fixedSize_JSAlt = function(value, size) {
  return value.padEnd(size).substring(0, size);
}

// Prototype (preferred)
String.prototype.fixedSize = function(size) {
  return this.padEnd(size).substring(0, size);
}

// Overloaded Prototype
function fixedSize(value, size) {
  return value.fixedSize(size);
}

// usage
console.log('Old school JS -> "' + fixedSize_JS('test (30 characters)', 30) + '"');
console.log('Semi-Old school JS -> "' + fixedSize_JSAlt('test (10 characters)', 10) + '"');
console.log('Prototypes (Preferred) -> "' + 'test (25 characters)'.fixedSize(25) + '"');
console.log('Overloaded Prototype (Legacy support) -> "' + fixedSize('test (15 characters)', 15) + '"');

Шаг за шагом..padEnd - Гарантирует длину строки

"Метод padEnd () дополняет текущую строку заданной строкой (повторяется, если необходимо), чтобы полученная строка достигла заданной длины. Заполнение применяется изконец (справа) текущей строки. Исходный код этого интерактивного примера хранится в репозитории GitHub. "source: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

.substring - ограничение на необходимую длину

Если вы решите добавить эллипсы, добавьтеих к выводу.

Я привел 4 примера общего использования JavaScript.Я настоятельно рекомендую использовать прототип String с Overloading для поддержки предыдущих версий.Это значительно упрощает реализацию и изменение позже.

...