Comment faire pour supprimer un suffixe à partir de la fin de la chaîne?

Je veux:

  1. Vérifier une variable et de déterminer si les 2 derniers caractères sont "Id"
  2. Si oui, retirez-les.

Je peux le faire avec ce ci-dessous, mais il va exploser si il y a un "Id" sous-chaîne autre que la fin. Est-il un RemoveFromEnd() méthode qui prend un certain nombre de caractères en argument?

 if (column.EndsWith("Id"))
 {
       //remove last 2 characters
       column = column.replace("Id", "");
 }

Je vois cette solution: qui fait ceci:

column = System.Text.RegularExpressions.Regex.Replace(column, "Id$", "");

mais il dit que c'est assez lent, et je vais être en cours d'exécution de ce code à l'intérieur d'un bloc de code que je voudrais être extrêmement rapide, donc je voulais voir si une solution plus rapide est disponible.

  • Juste curieux de voir comment "lente" la regexp est (une fin d'ancrage w/o mandature devrait être zippy-rapide) ... même si la sous-chaîne est probablement plus approprié ici. Otoh, que, avec la regexp n'est pas explicite conditionnel/EndsWith.
  • L'expression régulière doit être le plus rapide dans le cas général. Avez-vous essayé avec la précompilation ou les stocker en tant que membre de l'utiliser dans votre méthode? (afin d'éviter le coût de la création de la regex à chaque fois)
  • double possible de garniture de chaîne à la fin de la chaîne de caractères
  • L'extrait de code que vous mettez supprime tous les "Id" de la chaîne si elle a comme suffixe, il sera de retour "MyWrong" si la chaîne d'entrée est "MyIdWrongId"...
InformationsquelleAutor leora | 2011-03-12