web-dev-qa-db-fra.com

Comment couper une chaîne à N caractères en Javascript?

Comment puis-je, en utilisant Javascript, créer une fonction qui va couper la chaîne passée en argument, à une longueur spécifiée, également passée en argument. Par exemple:

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

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

Quelqu'un a des idées? J'ai entendu parler de l'utilisation de la sous-chaîne, mais je n'ai pas très bien compris.

110
user825286

Pourquoi ne pas utiliser simplement une chaîne ... string.substring(0, 7); Le premier argument (0) est le point de départ. Le deuxième argument (7) est le point final (exclusif). Plus d'infos ici.

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);
244
Will

Copier Will's comment dans une réponse, parce que je l'ai trouvée utile:

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

Merci Will.

Et un jsfiddle pour tous ceux qui s’intéressent https://jsfiddle.net/t354gw7e/ :)

30
Jon Lauridsen

Je suggère d'utiliser une extension pour la propreté du code . Notez que l'extension d'un prototype d'objet interne peut potentiellement gâcher les bibliothèques qui en dépendent.

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

Et utilisez-le comme:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)
8
student
7
kendaleiv
    let trimString = function (string, length) {
      return string.length > length ? 
             string.substring(0, length) + '...' :
             string;
    };

Cas d'utilisation,

let string = 'How to trim a string to N chars in Javascript';

trimString(string, 20);

//How to trim a string...
0
MD. ABU TALHA

Petit tard ... je devais répondre. C'est le moyen le plus simple.

// 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) + '"');

Pas à pas. . padEnd - Garanties la longueur de la chaîne 

"La méthode padEnd () complète la chaîne en cours avec une chaîne donnée (répétée si nécessaire) afin que la chaîne résultante atteigne une longueur donnée. Cet exemple est stocké dans un référentiel GitHub. " source: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 

.substring - limite la longueur dont vous avez besoin

Si vous choisissez d'ajouter des ellipses, ajoutez-les à la sortie.

J'ai donné 4 exemples d'utilisations courantes de JavaScript. Je recommande fortement d'utiliser le prototype String avec la surcharge pour le support hérité. Cela facilite beaucoup la mise en œuvre et le changement ultérieur.

0
Matthew Egan