2012-11-27 3 views
0

J'ai le code C# suivant pour remplacer . 's et +' s avec des espaces:Comment fusionner 2 simples RegEx?

string MyString = "this.is.just+an++example--here!are$more characters"; 
MessageBox.Show(Regex.Replace(MyString, @"[\.\+]", " ")); 

Parfois, cela peut entraîner un excès de blancs (comme, entre an et example).

Comment puis-je également ajouter le RegEx suivant à mon RegEx existant, il n'y a donc qu'un seul appel RegEx?

Regex.Replace(MyString, @"[ ]{2,}", " "); 

Ceci supprimera les espaces blancs en excès. Tous les autres caractères doivent rester intacts.

Toutes les solutions alternatives sont également les bienvenues!

Répondre

2

Vous devriez peut-être faire correspondre plusieurs caractères en premier lieu. Remplacez l'expression rationnelle par "[\.\+]+" pour correspondre à un ou plusieurs signes . ou +. Par exemple, "a...++b" entraînerait "a b"

MessageBox.Show(Regex.Replace(MyString, @"[\.\+]+", " ")); 
+0

Nice !! Juste une question: qu'en est-il où les espaces excédentaires apparaissent déjà dans la chaîne? C'est à dire. 'string MyString =" certains test hi ";' –

+0

Ajouter \ s à l'expression devrait couvrir cela. @ "[\. \ + \ s] +" –

+1

Ajoutez simplement l'espace à l'expression rationnelle: '[\. \ + \] +' – RJo

2

Vous devriez essayer. Vous n'avez pas besoin d'échapper le . s'il fait partie d'une classe de caractères

[.\+]+|[ ]{2,} 
+0

Il semble que cela fonctionne aussi: 'Regex.Replace (MyString," [. +] + "," ")' - Y at-il quelque chose de mal à cela? Merci –

+0

@DannyBeckett Nope. Cela devrait fonctionner aussi. – garyh

+0

Parfait, merci beaucoup! –