250 votes

moyen intelligent de raccourcir les longues chaînes avec javascript

Quelqu'un a-t-il une solution / bibliothèque plus sophistiquée pour raccourcir les chaînes avec JavaScript, que la solution évidente:

 if(string.length > 25) {
    string = string.substring(0,24)+"...";
}
 

474voto

KooiInc Points 38845
 String.prototype.trunc = String.prototype.trunc ||
      function(n){
          return this.length>n ? this.substr(0,n-1)+'…' : this;
      };
 

Maintenant vous pouvez faire:

 var s = 'not very long';
s.trunc(25); //=> not very long
s.trunc(5); //=> not ...
 

si par "plus sophistiqué" vous voulez dire: tronquer à la limite du dernier mot d'une chaîne, alors c'est peut-être ce que vous voulez:

 String.prototype.trunc =
     function(n,useWordBoundary){
         var toLong = this.length>n,
             s_ = toLong ? this.substr(0,n-1) : this;
         s_ = useWordBoundary && toLong ? s_.substr(0,s_.lastIndexOf(' ')) : s_;
         return  toLong ? s_ + '…' : s_;
      };
 

maintenant tu peux faire:

 s.trunc(11,true) //=>not very...
 

74voto

mwilcox Points 2091

Notez que cela ne doit être fait que pour Firefox.

Tous les autres navigateurs prennent en charge une solution CSS (voir le tableau de support ):

 p {
    white-space: nowrap;
    width: 100%;                   /* IE6 needs any width */
    overflow: hidden;              /* "overflow" value must be different from  visible"*/ 
    -o-text-overflow: ellipsis;    /* Opera < 11*/
    text-overflow:    ellipsis;    /* IE, Safari (WebKit), Opera >= 11, FF > 6 */
}
 

L'ironie est que j'ai obtenu cet extrait de code de Mozilla MDC.

11voto

Sean the Bean Points 819

Firefox prend également en charge une solution CSS.

 p {
    width: 100%;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
 

6voto

Jim Fiorato Points 1826

Plus moderne frameworks Javascript (JQuery, Prototype, etc...) ont une fonction d'utilité qui s'ajoute à la Chaîne qui gère cela.

Voici un exemple de Prototype:

'Some random text'.truncate(10);
// -> 'Some ra...'

Cela semble être une de ces fonctions que vous voulez que quelqu'un d'autre à traiter ou à maintenir. Je laisserais le cadre de la gérer, plutôt que d'écrire plus de code.

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