2010-01-24 34 views
39

me gustaría reemplazar algunas instrucciones de asignación como:Visual Studio Buscar y reemplazar expresiones regulares ayudan a

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

con

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

¿Hay una buena manera de hacer esto con Buscar de Visual Studio y Reemplazar, usando expresiones regulares? No estoy seguro de cuál sería la expresión regular.

Respuesta

59

Creo que en Visual Studio, puede marcar expresiones con llaves {txtSomeNum.Text}. Luego, en el reemplazo, puede consultarlo con \1. Entonces la línea de reemplazo sería algo así como Int32.Parse(\1).


Actualización: través @ Timothy003

VS 11 elimina la {} \ 1 sintaxis y usos() $ 1

+26

Sé que esto es viejo ... pero ¿por qué demonios Microsoft tiene que hacer todo por su propia cuenta? Cada otro IDE y software que he usado usa() para marcar expresiones y $ 1 para referirse a ellos. Microsoft debería llamar a estas expresiones irregulares – MikeMurko

+25

@MikeMurko VS 11 elimina la sintaxis {} \ 1 y usa() $ 1. ¡Hurra! – Timothy003

+0

Tarde mejor que nunca;) –

6

Esto es lo que estaba buscando:

Buscar: = {. * \. Texto}

Reemplazar: = Int32.Parse (\ 1)

+0

Debería escapar del segundo período en la expresión regular. –

+0

Buena captura. De hecho, necesitaba escapar del \ personaje para que se muestre. –

2

mejor expresión regular para el problema original sería

hallazgo expr .: {:} i \ .Texto

reemplazar expr .: Int32.Parse (\ 1)

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

para la guía definitiva de expresiones regulares en VS.

Recientemente completé el reformateo del proyecto C++ de otro programador desde el infierno. Había ingresado total o arbitrariamente, o dejado al azar, espacios y pestañas, sangría (o no), y un loco nivel de paréntesis anidando, de modo que ninguno de nosotros acostumbrado a estándares de codificación de ningún tipo podría incluso comenzar a leer el código antes de comenzar. Usó expresiones regulares de manera exhaustiva para encontrar y corregir construcciones anormales. En un par de horas, pude corregir problemas importantes en aproximadamente 125,000 líneas de código sin mirar realmente a la mayoría de ellos. En un hallazgo/reemplazo único particular, cambié más de 22,000 líneas de código en 125 archivos, el tiempo total es inferior a 10 segundos.

construcciones particularmente útiles en la expresión regular:

: B + == uno o más espacios en blanco y/o pestañas.

: i == coincide con un nombre de variable de estilo C o palabra clave (es decir, mientras que, si, pick3, bNotImportant)

: Wh == un char espacios en blanco .; no solo en blanco o en la pestaña

: Sm == cualquiera de los símbolos aritméticos (+, -,>, =, etc.)

: PU == cualquier signo de puntuacion

\ n == salto de línea (útil para encontrar donde se había insertado 8 o 10 líneas en blanco)

^== partidos Inicio de línea ($ a final de coincidencia)

Si bien hubiera sido agradable coincidir con algún otro estándar regex (duh), encontré varias extensiones de MS extremadamente útiles para buscar una base de código, como no tener que definir cientos de 'identificadores' de veces como "[A-Za-z0-9] +", en lugar de usar simplemente ": i".

Cuestiones relacionadas