283 votes

Comment réduire une chaîne de caractères à N caractères en Javascript ?

Comment puis-je, en utilisant Javascript, créer une fonction qui coupera la chaîne de caractères passée comme argument, à une longueur spécifiée, également passée comme 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 une idée ? J'ai entendu parler de l'utilisation de substring, mais je n'ai pas bien compris.

3 votes

"c'est" = 7 caractères, c'est ce que vous vouliez ?

0 votes

Comme indiqué dans la question, je ne sais pas trop comment utiliser la sous-chaîne pour ce faire. Pourriez-vous me donner un exemple ? Je vais accepter est une réponse bien sûr, si cela fonctionne ;) @Interstellar_Coder oops, typo !

572voto

William Points 7664

Pourquoi ne pas simplement utiliser la sous-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'informations ici.

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

0 votes

Merci ! Cela fonctionne parfaitement. Je le marquerai comme réponse dès que le délai sera dépassé !

40 votes

Et si vous voulez des ellipses pour les chaînes dépassant la longueur maximale (probablement plus utiles pour les chaînes plus longues) : var string = "ceci est une chaîne" ; var length = 20 ; var trimmedString = string.length > length ? string.substring(0, length - 3) + "..." : string.substring(0, length) ;

6 votes

Veuillez noter que string.substr(start, length) a un comportement étrange, il retournera vide si la longueur est supérieure à la longueur de la chaîne. string.substr(start, end) fonctionne comme prévu, c'est-à-dire qu'il retournera la chaîne jusqu'à sa fin s'il n'y a pas assez de caractères pour la fin donnée !

75voto

Jon Lauridsen Points 783

Copie de Will's en une réponse, car je l'ai trouvé 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 ceux que ça intéresse https://jsfiddle.net/t354gw7e/ :)

2 votes

Il est inutile d'utiliser string.substring(0, length) dans le cas contraire, puisque la chaîne de caractères est garantie comme étant <= 20 caractères à ce stade, utilisez simplement string .

2 votes

Pour ajouter deux caractères supplémentaires, utilisez le caractère "ellipse".

19voto

student Points 87

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

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

Et utilise-le comme :

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)

6 votes

Pourquoi pas ? Parce que vous écrasez le prototype d'un objet standard. .trim() . Cela peut entraîner un comportement inattendu dans d'autres bibliothèques et outils que vous pouvez utiliser.

1 votes

C'est ce dont j'avais besoin

11voto

kendaleiv Points 1872

5voto

MD. ABU TALHA Points 85
    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...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X