Regex (teste_teste - > testeTeste)..como?

5 respostas
jason_bourne

Pessoal,

Como faço para retirar o underline e a próxima letra tornar maiúscula usando regex?

5 Respostas

G

Se é que o texto se apresentará sempre dividindo as palavras por underline seria esse agrupamento:

(_\w{1})

Esse Pattern é só para encontrar. Ex.:

teste_coisa_bazuca_quadrado

Ele deve trazer os grupos (_c), (_b) e (q). Depois é só iterar, dar um upper e dar replaceAll("", “”).

Obs.: Não testei.

peczenyj
package br.example.regex;
import java.util.regex.*;
public class Test{
        public static void main (String [] args){
               String msg = "teste_teste";
               String regex = "(\\w+)_(\\w)(\\w*)";
               Pattern pattern = Pattern.compile(regex);
               Matcher matcher = pattern.matcher(msg);

               if (matcher.find()){
                       msg = msg.replaceFirst("_\\w",matcher.group(2).toUpperCase());
               }
               System.out.println("msg = " + msg);
        }
}
jason_bourne
peczenyj:
package br.example.regex;
import java.util.regex.*;
public class Test{
        public static void main (String [] args){
               String msg = "teste_teste";
               String regex = "(\\w+)_(\\w)(\\w*)";
               Pattern pattern = Pattern.compile(regex);
               Matcher matcher = pattern.matcher(msg);

               if (matcher.find()){
                       msg = msg.replaceFirst("_\\w",matcher.group(2).toUpperCase());
               }
               System.out.println("msg = " + msg);
        }
}

Vlw...vou testar :)

T

Como de costume, é bom perguntar. Você está fazendo isso para normalizar os nomes de variáveis e métodos de um programa para camelCase? Então tome cuidado, porque se a variável ou método estiver toda em maiúsculas você não pode fazer isso. Por exemplo:

if (ret == JOptionPane.OK_OPTION)...

Usando esse seu programa você poderia acabar tendo algo como:

if (ret == JOptionPane.OKOPTION)...

Isso porque ele substitui qualquer letra, não somente as minúsculas, se ela estiver precedida de “_”.

peczenyj

bastaria usar esta regex mais específica:

regex = “[a-z]_([a-z])”

e substituir esta regex “_[a-z]” pelo group(1).toUpperCase()

Criado 26 de outubro de 2007
Ultima resposta 26 de out. de 2007
Respostas 5
Participantes 4