2010-01-24 3 views
39

J'aimerais remplacer certaines instructions d'affectation comme:Visual Studio Rechercher et remplacer les expressions régulières aident

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

avec

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

est-il un bon moyen de le faire avec la Recherche de Visual Studio et Remplacer, en utilisant des expressions régulières? Je ne suis pas sûr de ce que serait l'expression régulière.

Répondre

59

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


Mise à jour: via @ Timothy003

VS 11 supprime le {} \ 1 syntaxe et utilisations() 1

+26

Je sais que c'est vieux ... mais pourquoi diable Microsoft doit-il tout faire de son propre chef. Tous les autres IDE et logiciels que j'ai jamais utilisés utilisent() pour marquer les expressions et $ 1 pour y faire référence. Microsoft devrait appeler ces expressions irrégulières – MikeMurko

+25

@MikeMurko VS 11 supprime la syntaxe {} \ 1 et utilise() $ 1. Yay! – Timothy003

+0

Mieux vaut tard que jamais;) –

6

$ Ceci est ce que je cherchais:

Rechercher: = {.. * \ texte}

Remplacer: = Int32.Parse (\ 1)

+0

Vous devriez échapper à la deuxième période de la regex. –

+0

Bonne prise. J'avais en fait besoin d'échapper au personnage pour que ça se voit. –

2

Mieux regex pour le problème d'origine serait

find expr .: {: i \ .Text}

remplacer expr .: Int32.Parse (\ 1)

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

pour le guide définitif de regex en VS.

J'ai récemment terminé de reformater le projet C++ d'un autre programmeur. Il avait complètement et arbitrairement entré, ou omis au hasard, des espaces et des tabulations, des indentations (ou pas), et un niveau d'imbrication entre parenthèses, de sorte qu'aucun d'entre nous utilisé pour coder les normes de n'importe quel type ne pouvait même commencer à lire le code avant de commencer. Utilisé regex extensivement pour trouver et corriger des constructions anormales. En quelques heures, j'ai pu corriger des problèmes majeurs dans environ 125 000 lignes de code sans vraiment regarder la plupart d'entre eux. Dans une seule recherche/remplacement, j'ai changé plus de 22 000 lignes de code dans 125 fichiers, temps total inférieur à 10 secondes.

constructions particulièrement utiles dans l'expression rationnelle:

: B + == un ou plusieurs espaces et/ou des languettes.

: i == correspond à un nom de variable C style ou un mot clé (à savoir tout, si, pick3, bNotImportant)

: Wh == espaces blancs ombles .; pas simplement vierge ou onglet

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

: Pu == toute marque de ponctuation

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

^== Début des matchs de la ligne ($ à Alors qu'il aurait été agréable de faire correspondre une autre norme regex (duh), j'ai trouvé un certain nombre d'extensions MS extrêmement utile pour la recherche d'une base de code, comme ne pas avoir à définir des centaines "d'identificateur" de fois que "[A-Za-z0-9] +", en utilisant simplement ": i".