2014-06-10 18 views
44

Googled per questo e ho trovato il modo di fare con con altri parser regex:Come posso usare una regex per sostituire lettere maiuscole con lettere minuscole in Intellij IDEA?

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions 
http://www.regular-expressions.info/replacecase.html 

Ho provato questi e né lavoro. Per fare un esempio, io voglio usare una regex per cambiare questo:

private String Name; 
private Integer Bar = 2; 

A tal:

private String name; 
private Integer bar = 2; 

Ho provato qualcosa di simile:

replace: private (\S+) (\S+) 
with: private $1 $L$2 
with: private $1 \L$2 
with: <etc.> 

Nessuno di loro lavoro. È possibile farlo in intellij, o questa è una caratteristica mancante? Questo è solo per scopi educativi e l'esempio è inventato. Voglio solo sapere se è possibile farlo in Intellij.

+3

C'è un motivo per cui vuoi usare un'espressione regolare? IntelliJ ha [un tasto di scelta rapida] (https://stackoverflow.com/questions/5265544/intellij-shortcut-to-convert-code-to-upper-or-lower-case) per farlo. – ajp15243

+0

@ ajp15243 Questo è solo per scopi didattici e l'esempio è inventato. Voglio letteralmente sapere se è possibile farlo in Intellij. –

+3

Abbastanza giusto! Volevo solo essere sicuro. Ho trovato il [riferimento IntelliJ Regex Syntax] (http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html), e nei commenti, qualcuno sembra fare la stessa domanda come te. Un moderatore ha risposto (e penso che sia leggermente comprensibile), ma la risposta indica che ciò non è possibile con la sintassi regex di IntelliJ. – ajp15243

risposta

78

In IDEA 15 siete in grado di utilizzare gli interruttori sottostanti per attivare o disattivare il caso di espressioni catturate. Questo è ora officially documented da quando questa versione è stata rilasciata.

  • \l: abbassare il caso di un carattere successivo
  • \u: il caso di un carattere successivo
  • \L: abbassare il caso dei caratteri successivi fino a \E o alla fine della sostituzione stringa
  • \U: il caso dei caratteri successivi fino a quando un \E o alla fine della stringa di sostituzione
  • \E: segna la fine del un cambiamento caso iniziato da \U o \L

Ecco un esempio di utilizzo (come la documentazione non è chiaro):

find: (\ w + _) + (\ w +) sostituire: \ L $ 1 $ 2 \ E

È possibile che questo verrà convertito FOO_BAR_BAZ-foo_bar_baz ecc il $ 1 si riferisce al primo gruppo di cattura trovato (tra parentesi), $ 2 per il secondo set, ecc

Per i posteri: questo era inizialmente reported di @gaoagong e documentato there.

13

Ho cercato la risposta e mi sono reso conto che @ ajp15243 ha già risposto a questa domanda. Al momento non è possibile in Intellij utilizzare la funzione di regex per modificare il caso di una lettera. C'è una breve discussione al seguente URL sulla funzionalità.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Si può anche votare per la caratteristica in questione YouTrack qui:

http://youtrack.jetbrains.com/issue/IDEA-70451

C'è una regex Intellij plug-in, ma ahimè anche non sostenere e superiore dell'involucro inferiore .

http://plugins.jetbrains.com/plugin/19?pr=idea

Si potrebbe semplicemente essere necessario eseguire i file attraverso un programma Perl per sostituirli in modo corretto.

+1

Secondo lo youtrack, questo viene aggiunto nella versione 15 di IntelliJ –

5

Ho iniziato a utilizzare il plug-in Idea Vim e ho imparato a fare cose come questa in Vim. In questo modo ho potuto riutilizzare queste abilità al di fuori di Idea.

Ecco il comando vim per fare ciò che hai chiesto.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g 

Regex inserito nell'IDE. Le barre extra sono necessarie per sfuggire al modello regex nel Vim.

Within The IDE

Trova Plugin dall'interno dell'IDE. enter image description here

+1

Soluzione enorme che probabilmente non aiuterà il 99% delle persone qui poiché non vorranno utilizzare l'emulazione VIM. Ma, ho già installato questo plugin in modo che funzioni per me :) –

+0

Lo so .. Vi e Vim sembrano male inutili all'inizio a chiunque usi un IDE. Alla fine ho iniziato ad imparare Vi dopo averli incontrati tutti nei server. Mi piace un po 'ora che non devo cambiare mentalità mentre mi muovo tra gli strumenti. – chinto

+0

L'ho appena iniziato, non ancora fluente. Pensi di avere un editing più produttivo in Intellij-IDEA con IDEAVim rispetto a prima che tu usassi Vi? –

Problemi correlati