2010-07-31 4 views
1

Comment puis-je transmettre plusieurs modèles au paramètre de motif regex.replace()?C# modèles multiples dans regex.replace()

En PHP, vous abandonnez simplement le tableau qui les contient. Y a-t-il une sorte de même option en C#? Je passe en revue certains noms d'utilisateur et certains de ces noms d'utilisateurs sont entourés de balises HTML. Les balises html ne sont pas toutes les mêmes. Mais je sais lesquels ils sont. Donc, si je peux transmettre plusieurs motifs à rechercher dans le paramètre de motif regex.replace(), ce serait bien. Ou je vais devoir faire pour chaque balise html un motif séparé et lancer la fonction regex.replace().

J'espère que je suis clair sur ce que j'essaie d'accomplir!

Merci d'avance!

[EDIT] @Alan Moore,

Bottom line, la suppression de toutes les balises html à partir d'une chaîne, est ce que je suis en train de faire.

[/ EDIT]

+1

Vous obtiendrez une meilleure aide si vous nous dites * ce que vous essayez de faire *, pas * comment vous essayez de le faire *. Oubliez ce gadget que vous connaissez d'une autre langue et dites-nous simplement quel résultat vous essayez d'atteindre. Et s'il vous plaît éditez votre question et mettez l'information là, pas dans un commentaire. –

Répondre

2

Donc vous avez une liste de chaînes, chacune composée entièrement d'un nom d'utilisateur éventuellement inclus dans les balises HTML? Cela ne devrait pas importer quels balises ils sont; il suffit d'enlever tout ce qui ressemble comme un tag:

name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty); 
7
// I’m assuming you have a regex for each thing you want to replace 
List<string> multiplePatterns = [...]; 

string result = Regex.Replace(input, string.Join("|", multiplePatterns), ""); 
5

Utilisez le diviseur de regexp |, par exemple:

</?html>|</?head>|</?div> 
1

Si la performance est importante et il n'y a aucun risque de '<' ou '>' dans les noms d'utilisateur, cela pourrait fonctionner:

string RemoveTags(string s) 
     { 
      int startIndex = s.IndexOf('<'); 
      int endIndex = s.IndexOf('>'); 
      return startIndex >= 0 && endIndex >= 0 ? RemoveTags(s.Remove(startIndex, endIndex - startIndex + 1)) : s; 
     }