2010-02-12 9 views
30

Vorrei passare attraverso tutti i miei file di codice sorgente e sostituire ogni occorrenza di k_Xyyy con k_xyyy (passare la prima lettera dopo k_ da maiuscolo a minuscolo).Come sostituire le lettere maiuscole con lettere minuscole usando regex in Eclipse?

Sto usando la finestra di dialogo di eclissi per cercare e sostituire più file. In questo momento ho la regex \bk_([A-Z]).

Come specificare la stringa di sostituzione della regex?

+0

Non è possibile utilizzare la funzionalità di ri-factoring di Eclipse per questo? –

+0

Ne ho bisogno su base regolare ogni volta che genero entità da tabelle con prefissi di nomi di colonne. – chinto

risposta

11

Questo non è possibile. O utilizzare la funzionalità re-factoring di Eclipse, o sostituire uno alla volta:

regex  : \bk_A 
replacement : k_a 

regex  : \bk_B 
replacement : k_b 

... 

regex  : \bk_Z 
replacement : k_z 
15

ho appena risolto lo stesso compito (dovuto girare l'interfaccia .net in interfaccia Java) utilizzando la potenza di VIM :)

void DoMethod1 -> void doMethod1 
Foo PerformMethod2 -> Foo performMethod2 
:%s/\(^\s*\w\+\s\+\)\([A-Z]\)/\1\L\2/g 

Qui cercate (indentazione opzionale seguito da tipo di ritorno seguito da spazi bianchi), seguita da (lettera maiuscola). Le parentesi graffe stanno catturando i gruppi. Quindi eseguiremo un gruppo di prima cattura in sostituzione \ 1 secondo minuscolo \ L in minuscolo \ 2.

Questo ovviamente richiede l'apertura di un file in Vim, ma in ogni caso è molto più veloce di fare la stessa cosa a mano in Eclipse.

0

(per me, perché ho appena iniziato la programmazione, questo è stato più divertente pensare a) Prendere $pattern_to_change e convertirlo da ASCII a decimale utilizzando ord() .Prendere il numero di dicembre risultante e aggiungere 32. Poi convertire $desired_pattern in ASCII utilizzando chr().

O semplicemente scaricare SublimeText e usare il suo Trova e sostituisci per trovare tutte le occorrenze e sostituirli con un testo differenza (Sublime ha regex pure).

Sono sicuro che avresti potuto convertire un miliardo a mano dato che questo post ha 5 anni, ma potresti averlo completato in 5 minuti con Sublime.

Editor di testo davvero utile.

1

Avevo bisogno di fare questo per un enorme pezzo di codice sorgente in cui i letterali di stringa dovevano essere convertiti in lettere minuscole. Ho trovato un modo usando Notepad ++ e il plugin Python Script, come usato here.

+5

in Notepad ++ è possibile utilizzare '\ L $ 1 \ E' nella stringa di sostituzione per convertire il primo gruppo corrispondente in lettere minuscole. Lo stesso funziona con \ U ... \ E per le maiuscole – fuemf5