2010-05-04 6 views
4

Am utilisant regex.Replace() pour remplacer l'occurrence entière d'une chaîne .. alors j'ai donné comme Regex.Replace (str, @ stringToReplace, "**"); où stringToReplace = @ "session" + "\ b"; Si je donne comme ça, ça ne remplace pas .. mais si je donne comme Regex.Replace (str, @ "session \ b", "**"); alors son travail .. comment éviter cela .. je veux passer la valeur qui sera réglée dynamiquement ..Regex.Replace() pour remplacer l'occurrence entière

Merci Nimmi

+0

Veuillez marquer avec le langage de programmation. – doublep

Répondre

4

essayer

stringToReplace = @"session" + @"\b"; 
+0

+1 pour le rapide. –

+0

Son fonctionnement. Grand .. Thanku tellement .. – Nimmi

+1

@Nimmi: Vous devez (si possible) choisir la réponse la plus utile/correcte et sélectionnez la coche à côté de lui pour marquer comme "accepté". Aussi de bonnes réponses upvote (je viens juste d'upvoted votre question, maintenant vous avez assez de réputation pour le faire). –

0

@ \ "session" + » b " et @" session \ b "

ne sont pas la même chaîne. Dans le premier cas "\ b" vous ne traitez pas le slash comme une barre oblique mais comme un paramètre d'échappement. Dans le second cas, vous faites.

Alors @ "session" + @ "\ b" devrait apporter le même résultat

4

Le @ signifie ici un verbatim string literal. Lorsque vous écrivez "\ b" sans le @, cela signifie le caractère de retour arrière, c'est-à-dire le caractère avec le code ASCII 8. Vous voulez que la chaîne se compose d'une barre oblique inverse suivie d'un b, ce qui signifie expression. Pour ce faire, vous devez soit échapper à la barre oblique inverse pour en faire une barre oblique inverse: , soit transformer la deuxième chaîne en une chaîne littérale verbatim: @"\b". Notez également que le @ dans @"session" (sans le \b) n'a pas réellement d'effet, bien qu'il n'y ait aucun mal à le laisser là.

stringToReplace = "session" + @"\b"; 
+0

+1 pour l'explication la plus complète. :) –

Questions connexes