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?

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".


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


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).


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 ).

@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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.