2009-03-10 5 views
1

Je souhaite remplacer tous les caractères non-alpha d'une chaîne par un signe '+', mais en vérifiant qu'un groupe de plusieurs caractères non-alpha est uniquement remplacé par un signe plus.Regex remplace les caractères non-alpha consécutifs par caractère unique

Je pensais que ce qui suit pourrait fonctionner, mais apparemment pas:

System.Text.RegularExpressions.Regex.Replace(name, @"[^\w]*?", "+") 

Répondre

0

Essayez System.Text.RegularExpressions.Regex.Replace (nom, @ "\ W +", "+")

Pour ceci: "Sasa - == [] &^asdsa2435" correspond - == [] &^

+0

Une petite mise en garde: l'utilisation de \ W exclura les lettres, les chiffres * et les * underscores de la correspondance. Utilisez [^ A-Za-z] à la place si vous voulez seulement exclure des lettres, ou [^ 0-9A-Za-z] pour exclure les caractères alphanumériques (mais inclure des traits de soulignement). – LukeH

0

vous ne devez pas désactiver greediness, et que vous voulez 1 ou plus, de 0 ou plus. Remplacer "*?" avec "+".

Questions connexes