2010-04-28 6 views
1

Je suis en train d'utiliser Regex.Replace pour dépouiller les caractères indésirables, mais je dois tenir compte des espaces:Regex Dépouiller Caractères spéciaux

string asdf = "doésn't work?"; 
string regie = @"([{}\(\)\^$&._%#[email protected]=<>:;,~`'\’ \*\?\/\+\|\[\\\\]|\]|\-)"; 
Response.Write(Regex.Replace(asdf,regie,"").Replace(" ","-")); 

retours nefonctionnepas au lieu de nefonctionnepas

Idées?

Merci!

+1

Cela pourrait vous avoir épargné l'embarras: http://www.ultrapico.com/Expresso.htm – bzlm

Répondre

7

Votre expression régulière comprend un espace, l'espace Je dépouillèrent avant la string.Replace est appelée.

string regie = @"([{}\(\)\^$&._%#[email protected]=<>:;,~`'\’ \*\?\/\+\|\[\\\\]|\]|\-)"; 
              ^here 

Retirez-le de l'expression régulière et votre code devrait faire ce que vous attendez:

string regie = @"([{}\(\)\^$&._%#[email protected]=<>:;,~`'\’\*\?\/\+\|\[\\\\]|\]|\-)"; 
1

Vous avez un espace à l'intérieur de votre regex, ici: \’ \*.