38 votes

Aide Visual Studio sur la recherche et remplacement d'expressions régulières

Je voudrais remplacer certaines déclarations d'affectation comme:

 int someNum = txtSomeNum.Text; 
int anotherNum = txtAnotherNum.Text;
 

avec

 int someNum = Int32.Parse(txtSomeNum.Text);
int anotherNum = Int32.Parse(txtAnotherNum.Text);
 

Y a-t-il un bon moyen de faire cela avec Find and Replace de Visual Studio, en utilisant des expressions régulières? Je ne suis pas sûr de ce que serait l'expression régulière.

59voto

Mark Wilkins Points 29291

Je pense que dans Visual Studio, vous pouvez marquer les expressions avec des accolades {txtSomeNum.Text} . Ensuite, dans le remplacement, vous pouvez vous y référer avec \1 . Ainsi, la ligne de remplacement serait quelque chose comme Int32.Parse(\1) .


Mise à jour: via @ Timothy003

VS 11 supprime la syntaxe {} \ 1 et utilise () $ 1

7voto

6voto

David Hodgson Points 2408

C'est ce que je cherchais:

Rechercher: = {. * \. Text}

Remplacez: = Int32.Parse (\ 1)

2voto

Ken Points 51

Mieux regex pour le problème d'origine serait

trouver expr.: {:i\.Texte}

remplacer expr.: Int32.Parse(\1)

Découvrez: http://msdn.microsoft.com/en-us/library/2k3te2cs%28v=vs.100%29.aspx

pour le guide de référence pour l'expression rationnelle dans VS.

J'ai récemment terminé le reformatage d'un autre programmeur C++ de projet de l'enfer. Il avait totalement et entré de façon arbitraire, ou laissé au hasard, d'espaces et de tabulations, l'indentation (ou pas), et un fou niveau d'imbrication de parenthèses, de sorte qu'aucun de nous a habitués à des standards de codage de n'importe quel type pourrait même commencer à lire le code avant de me lancer. Utilisé regex largement de trouver et de corriger anormale des constructions. Dans quelques heures, j'ai été en mesure de corriger des problèmes majeurs dans environ 125 000 lignes de code sans réellement regarder la plupart d'entre eux. Dans un simple rechercher/remplacer, j'ai changé plus de 22 000 lignes de code dans 125 fichiers, le temps total de moins de 10 secondes.

Particulièrement utile constructions dans la regex:

:b+ == l'un ou plusieurs espaces ou tabulations.

:i == correspond à un style C nom de la variable ou de mots-clés (c'est à dire bien que, si, pick3, bNotImportant)

:Wh == un espace char.; pas seulement vide ou onglet

:Sm == un des symboles arithmétiques (+, -, >, =, etc.)

:Qté == n'importe quel signe de ponctuation

\n == saut de ligne (utile pour trouver où il avait inséré 8 ou 10 lignes vides)

^ == matchs de début de ligne ($ afin de correspondre à la fin)

Alors qu'il aurait été agréable de faire correspondre un autre regex standard (duh), je n'ai trouver un certain nombre de MS extensions très utiles pour la recherche d'un code de base, tels que ne pas avoir à définir "identificateur" des centaines de fois comme "[A-Za-z0-9]+", au lieu de simplement en utilisant ": "je".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X