Trova e sostituisci: aggiungi ritorno a capo o Newline


183

Nel caso della seguente stringa da analizzare.

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

Voglio sostituire il ~~?con acarriage return

La sostituzione con \naggiunge semplicemente la stringa"\n"

Come si può fare?

Risposte:


272

Assicurati che "Usa: espressioni regolari" sia selezionato nella finestra di dialogo Trova e sostituisci:

Finestra di dialogo Trova / sostituisci Usa espressioni regolari

Si noti che per Visual Studio 2010 non funziona con l' estensione "Ricerca rapida" di Visual Studio Productivity Power Tools (a partire dall'aggiornamento di luglio 2011); invece, dovrai usare la finestra di dialogo Trova e sostituisci completa (usa Ctrl + Maiusc + H o Modifica -> Trova e sostituisci -> Sostituisci in file) e cambia l'ambito in "Documento corrente".


5
anche usare il pulsante "Riproduci" a destra del testo Trova è utile
Cel

3
e se stai cercando di abbinare caratteri speciali come le parentesi non dimenticare di usare ad esempio \)quando sono attive le espressioni regolari ...
Cel

2
Il ?personaggio deve essere evaso in Regex perché significa che l'elemento precedente è facoltativo. Pertanto, il testo corretto "Trova cosa" è ~~\?, con il punto interrogativo sfuggito da una barra rovesciata. La risposta che hai dato funziona sul testo di esempio perché troverà avidamente la seconda tilde e la consumerà, tuttavia se una singola tilde esiste anche nel testo ovunque, verrà erroneamente sostituita con una nuova riga.
ErikE,

Se è installato Productivity Power Tools, è ancora possibile fare ctrl + merda + h e quindi ctrl + h per aprire la finestra Trova / Sostituisci nativa di Visual Studio.
Neb

Va notato che se si seleziona "Usa espressioni regolari", è possibile utilizzare "\ n" per trovare (e sostituire) anche le nuove righe.
Jacob Lockard,

28

Puoi anche provare \x0d\x0anella casella "Sostituisci con" con la casella "Usa espressione regolare" selezionata per ottenere il ritorno a capo + avanzamento riga usando Trova / Sostituisci di Visual Studio. L'uso di \n(avanzamento riga) è uguale a\x0a


13

Se imposti il ​​flag "Usa espressioni regolari", allora \ n verrebbe tradotto. Ma tieni presente che dovresti modificare il termine di ricerca per renderlo compatibile con regexp. Nel tuo caso dovrebbe essere sfuggito in questo modo "\ ~ \ ~ \?" (senza virgolette).


3
Non è necessario sfuggire a '~' in Regex. È un personaggio letterale. Questo non è corretto
ErikE,

12

Se si desidera evitare il fastidio di sfuggire ai caratteri speciali nella stringa di ricerca e sostituzione quando si utilizzano espressioni regolari, attenersi alla seguente procedura:

  1. Cerca la tua stringa originale e sostituiscila con "UniqueString42", con le espressioni regolari disattivate .
  2. Cerca "UniqueString42" e sostituiscilo con "UniqueString42 \ nUniqueString1337", con espressioni regolari su
  3. Cerca "UniqueString42" e sostituiscilo con la prima riga della sostituzione (spesso la stringa originale), con le espressioni regolari disattivate .
  4. Cerca "UniqueString42" e sostituiscilo con la seconda riga della sostituzione, con le espressioni regolari disattivate .

Si noti che anche se si desidera effettuare manualmente il pich delle corrispondenze per la prima ricerca e la sostituzione, è possibile utilizzare in modo sicuro "Sostituisci tutto" per gli ultimi tre passaggi.

Esempio

Ad esempio, se si desidera sostituire questo:

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

con quello:

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

Faresti le seguenti sostituzioni:

  1. public IFoo SomeField { get { return this.SomeField; } }XOXOXOXO(regex off ).
  2. XOXOXOXOXOXOXOXO\nHUHUHUHU(regex on ).
  3. XOXOXOXOpublic IFoo Foo { get { return this.MyFoo; } }(regex off ).
  4. HUHUHUHUpublic IFoo Bar { get { return this.MyBar; } }(regex off ).

@Alex Se hai una soluzione pratica a questo problema che evita di dover sfuggire manualmente alla tua ricerca e sostituire il testo quando lo trasforma in espressioni regolari e passare i prossimi 10 minuti a riparare il mostro creato in quel modo, sarei molto felice di sentire esso, poiché la mia risposta è solo un brutto trucco. Ma come puoi vedere, tutte le altre risposte che funzionano su un Visual Studio vanilla senza plug-in aggiuntivi richiedono l'uso di espressioni regolari e quindi sfuggono al semplice testo.
Suzanne Dupéron,

2
Non intendevo in senso negativo. Mi scuso di aver dimenticato di mettere una faccina: D Per quanto riguarda una soluzione, no non ne ho una che coinvolge VS. Ma ho scoperto che qualsiasi editor esterno decente che supporta regex (notepad ++ ecc.) Funziona abbastanza bene.
Alex

2
UltraEdit è il re della ricerca sostitutiva: qui cerchi nuove linee, interruzioni di riga o altro semplicemente contrassegnando quelle linee e avviando la ricerca. - Per quanto riguarda la sostituzione, inserisci ^ n per \ n, ^ r per \ r e ^ t per \ t - se solo VS2010 farebbe lo stesso :-)
Miros,

Puoi sempre visitare regex101.com per vedere se la tua stringa di ricerca corrisponderà a caratteri letterali o verrà interpretata come caratteri di controllo Regex.
ErikE,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.