2010-11-17 2 views
1

J'ai une chaîne qui pourrait contenir plusieurs valeurs différentes, parmi lesquelles.Supprimer tous les caractères après le dernier - mais seulement si après - a quatre caractères

ÉDITÉE pour plus de clarté: var test pourrait égaler ou FW21002-185 FW21002-181-0001 ou abcdefg ou 245-453-654 ou FW21002-181-00012

Je voudrais supprimer tous les caractères après et y compris le dernier - seulement si cette chaîne contient quatre caractères après le dernier tiret. Donc, dans les exemples de chaînes ci-dessus, le seul qui devrait être changé est le deuxième à "FW21002-181" Tous les autres resteraient tels qu'ils sont.

Comment est-ce que je ferais ceci en JavaScript. Regex est ok aussi. Merci.

+1

Le JavaScript que vous avez affichée est vide de sens et syntaxiquement invalide. –

+0

Ce n'était pas censé être "valide" javascript. J'essayais de dire que le test de la variable pourrait contenir l'une des valeurs indiquées ci-dessous – user357034

Répondre

3

A regex pour ce faire serait

var chopped = test.replace(/-[^-]{4,}$/, '-'); 

(en supposant que vous voulez que "-" à la fin). (Oh aussi ce but est de faire correspondre 4 ou plus caractères de fin - si vous voulez exactement quatre, juste se débarrasser de la virgule dans {4,}.)

+0

merci, mon erreur, je ne veux pas le dernier "-". Donc je suppose que c'est var haché = test.replace (/ - [^ \ -] {4,} $ /, ''); – user357034

+0

oui - aussi j'ai corrigé ce backslash parasite dans la chose [^ -] - vous n'avez pas besoin de ça. – Pointy

+0

A travaillé parfait sans le, dans le {4} et avec "" comme chaîne de remplacement, THX !!! – user357034

1

Si vous ne souhaitez pas utiliser une expression régulière:

function removeLongSuffix(var str) 
{ 
    var tokens = str.split('-'), 
     last = tokens[tokens.length-1]; 
     if (last.length > 3) 
     { 
      return tokens.slice(0,-1).join('-'); 
     } 
     return str; 
} 
2

Pas regex nécessaire:

var str = ..., 
    pos = str.lastIndexOf('-'); 

if (pos > -1 && pos == str.length - 5) 
    str = str.substring(0, pos); 
Questions connexes