Expressões regulares no Eclipse

Olá pessoal,

nem sei se tem jeito de fazer o que eu quero, mas é o seguinte: começamos um projeto usando uma notação para nomes de atributos de classes e variáveis que separava palavras por ‘_’, como “exec_thread” ou “algorithm_name”.

Estamos com vontade de, agora, usar a convenção de código da Sun para Java (http://java.sun.com/docs/codeconv/), transformando os nomes acima em “execThread” e “algorithmName”, por exemplo.

Usando as expressões regulares no Find/Replace do Eclipse, é possível pegar, por exemplo, o primeiro caractere que vem depois de um underscore e substituir pelo mesmo caractere em upper case?

Alterar mais de 100 classes na mão, mesmo usando o replace normal, vai ser um pé no saco… :?

[]'s

Da sim, numa boa… eu so nao sei fazer essa regex :smiley:

Idem hehehehhee :stuck_out_tongue:

acho que num rola não
não tem com dizer para colocar em uppercase uma das letras da string.

o search seria mais ou menos o seguinte:
(.)_(.?)(.)

ai tu poderia utilizar no resultado:
$1 - a primeira palavra
$2 - a primeira letra da segunda palavra
$3 - o resto da segunda palavra

mas não tem como fazer o $2 em uppercase no resultado
isto é uma limitação da regexp
mas é quase certeza, não sou nenhum mestre de ER, então pode ser que eu tenha faltado neste dia de aula :slight_smile:

mas pelo menos a busca ja ta prontinha ai :slight_smile:

se tu tem um linux, com o sed da para fazer isto legal, ele usa um superset se ER para fazer as substituições :slight_smile:

ahh, a falta do que fazer agora, me compeliu a abrir o jEdit que tem a opção de busca por ER e replace por resultado de uma expressão beanshel, que resolve o teu problema, e ele ainda tem a opção de executar o mesmo relpace em todos os buffers abertos, o que faz com que tu resolva teu problema, com um pouquinho de fé, literalmente, ao apertar de um botão :slight_smile:

testa ai,
instala o jedit, abre 2 ou 3 arquivos destes que tu vai trabalhar, para teste
aperta CTRL+F
marca a opção de expressões regulares
marca a checkbox “return value of a beanshell …”
coloca na caixa de procura:
(.)_(.?)(.)

e na caixa de replace
_1 + _2.toUpperCase() + _3

marca “All Buffers”

e depois de rezar um pai nosso e tres ave marias
clica em replace all

e deve ter corrigido tudinho :slight_smile:

testa ai e avisa pra nois se funcionou :slight_smile:

nossa…

vou tentar pq agora fiquei curioso, brigadão hehehehe

Eu resolvi da seguinte forma (bem animal mesmo, pode rir):

  1. Find in files: _a
    1.1) Replace all with: A

  2. Find in files: _b
    2.1) Replace all with: B

.
.
.
26) Find in files: _z
26.1) Replace all with: Z

Quinze minutinhos de tarefas repetitivas e tudo resolvido… :lol:

acho que a minha segunda resposta no jedit era mais fácil :slight_smile: