2013-07-05 3 views
-2

Je souhaite remplacer toutes les occurrences d'une chaîne, tant que celles-ci ne commencent pas par '@', donc par exemple dans la suite requête:Remplacer toutes les occurrences de chaîne uniquement si elles ne commencent pas par '@'

(surname = @surname and surname = @surname1) 

si je veux remplacer surname, il ne remplacera les deux d'entre eux sur le côté gauche du signe égal. Ainsi, laissant @surname et @surname1 non remplacé.

+1

Avez-vous déjà essayé quelque chose? – Tim

Répondre

3

Vous pouvez utiliser Regex.Replace pour cela:

Regex.Replace(yourString, "([^@])surname", "$1Diaz"); 

Le [^@] dit essentiellement que tout Regex caractère sauf le symbole @ peut venir devant le texte « nom » que vous recherchez. Le $ 1 est nécessaire car sinon, quel que soit le personnage sera également retiré.

Notez que cette Regex, sans modification supplémentaire, ne correspondra pas à "patronyme" si elle est au début de la chaîne. Dans l'exemple que vous avez fourni, il commence par une parenthèse ouverte, aussi longtemps que cette condition est remplie, la solution ci-dessus fonctionnera.

+0

Vous pouvez également utiliser des assertions de largeur nulle pour éliminer le besoin de $ 1. –

+0

Merci pour cela, comment peut-il être modifié pour correspondre à "patronyme" au début de la chaîne aussi? –

Questions connexes