Buscar y reemplazar - Agregar retorno de carro O Nueva línea

183

En el caso de la siguiente cadena a analizar.

ford mustang,10,blue~~?bugatti veyron,13,black

Quiero reemplazar el ~~?con uncarriage return

Reemplazar con \nsolo agrega la cadena"\n"

¿Cómo se puede hacer esto?

Mantisimo
fuente

Respuestas:

272

Asegúrese de que "Usar: expresiones regulares" esté seleccionado en el cuadro de diálogo Buscar y reemplazar:

Cuadro de diálogo Buscar / reemplazar Usar expresiones regulares

Tenga en cuenta que para Visual Studio 2010, esto no funciona en la extensión "Búsqueda rápida" de Visual Studio Productivity Power Tools (a partir de la actualización de julio de 2011); en su lugar, deberá usar el cuadro de diálogo completo Buscar y reemplazar (use Ctrl + Shift + H, o Editar -> Buscar y reemplazar -> Reemplazar en archivos), y cambie el alcance a "Documento actual".

Martín
fuente
55
usar el botón "Reproducir" a la derecha del texto Buscar también es útil
Cel
3
y si está intentando hacer coincidir caracteres especiales como paréntesis, no olvide usar, por ejemplo, \)cuando las expresiones regulares están
activadas
2
El ?carácter debe escaparse en Regex porque significa que el elemento anterior es opcional. Por lo tanto, el texto correcto "Buscar qué" es ~~\?, con el signo de interrogación escapado por una barra invertida. La respuesta que dio funciona en el texto de muestra porque con avidez encontrará la segunda tilde y la consumirá, sin embargo, si también existe una tilde en el texto, se reemplazará de forma incorrecta con una nueva línea.
ErikE
Si Productivity Power Tools está instalado, aún puede hacer ctrl + shit + h y luego ctrl + h para abrir la ventana nativa de Visual Studio Buscar / Reemplazar.
Nab
Cabe señalar que si se selecciona "Usar expresiones regulares", se puede usar "\ n" para buscar (y reemplazar) nuevas líneas también.
Jacob Lockard
28

También puede probar \x0d\x0aen el cuadro "Reemplazar con" con el cuadro "Usar expresión regular" marcado para obtener el retorno de carro + avance de línea utilizando Visual Studio Buscar / Reemplazar. Usar \n(avance de línea) es lo mismo que\x0a

Decano
fuente
13

Si establece el indicador "Usar expresiones regulares", entonces \ n se traducirá. Pero tenga en cuenta que tendría que modificar su término de búsqueda para que sea amigable con las expresiones regulares. En su caso, se debe escapar así "\ ~ \ ~ \?" (sin comillas).

desintonizado
fuente
3
'~' no necesita escapar en Regex. Es un personaje literal. Esto es incorrecto.
ErikE
12

Si desea evitar la molestia de escapar de los caracteres especiales en su cadena de búsqueda y reemplazo al usar expresiones regulares, siga estos pasos:

  1. Busque su cadena original y reemplácela con "UniqueString42", con expresiones regulares desactivadas .
  2. Busque "UniqueString42" y reemplácelo por "UniqueString42 \ nUniqueString1337", con expresiones regulares en
  3. Busque "UniqueString42" y reemplácelo con la primera línea de su reemplazo (a menudo su cadena original), con expresiones regulares desactivadas .
  4. Busque "UniqueString42" y reemplácelo con la segunda línea de su reemplazo, con expresiones regulares desactivadas .

Tenga en cuenta que incluso si desea buscar coincidencias manualmente para la primera búsqueda y reemplazo, puede usar "reemplazar todo" de forma segura para los tres últimos pasos.

Ejemplo

Por ejemplo, si desea reemplazar esto:

public IFoo SomeField { get { return this.SomeField; } }

con ese:

public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }

Harías las siguientes sustituciones:

  1. public IFoo SomeField { get { return this.SomeField; } }XOXOXOXO(regex apagado ).
  2. XOXOXOXOXOXOXOXO\nHUHUHUHU(expresión regular en ).
  3. XOXOXOXOpublic IFoo Foo { get { return this.MyFoo; } }(regex apagado ).
  4. HUHUHUHUpublic IFoo Bar { get { return this.MyBar; } }(regex apagado ).
Suzanne Dupéron
fuente
@Alex Si tiene una solución práctica para este problema que evita tener que escapar manualmente de su búsqueda y reemplazar texto al transformarlo en expresiones regulares, y pasar los próximos 10 minutos arreglando el monstruo creado de esa manera, me alegraría escuchar ya que mi respuesta es solo un truco feo. Pero como puede ver, todas las otras respuestas que funcionan en un Visual Studio de vainilla sin complementos adicionales requieren el uso de expresiones regulares y, por lo tanto, escapar de texto simple.
Suzanne Dupéron
2
No quise decir eso de mala manera. Mis disculpas, olvidé poner una carita sonriente: D En cuanto a una solución, no, no tengo una que involucre VS. Pero descubrí que cualquier editor externo decente que admita regex (notepad ++, etc.) funciona bastante bien.
Alex
2
UltraEdit es el rey de la búsqueda de reemplazo: aquí busca nuevas líneas, saltos de línea o lo que sea simplemente marcando esas líneas y comenzando la búsqueda. - En cuanto a reemplazarlo, simplemente ingrese ^ n para \ n, ^ r para \ r y ^ t para \ t - si solo VS2010 hiciera lo mismo :-)
Miros
Siempre puede visitar regex101.com para ver si su cadena de búsqueda va a coincidir con caracteres literales o si se interpretará como caracteres de control Regex.
ErikE
7

Puede usar la búsqueda y el reemplazo de líneas múltiples en la macro de Visual Studio que proporciona una GUI agradable para la tarea.

ingrese la descripción de la imagen aquí

Peter Macej
fuente
No parece funcionar con Visual Studio 2017 sin algunos pasos adicionales, es decir, tener que hacer clic en "buscar en archivos" y luego modificar el alcance de los cuadros de diálogo, el acceso directo predeterminado es f # interactivo ahora.
Mark Schultheiss