Regex para remoção de caracteres iguais

3 respostas
S

Bom galera, tenho um código que remove os caracteres iguais de uma frase, por exemplo:

String - Tesssteee, vira Teste e esse código ficou um tanto quanto feio, pois eu posso ter o tanto de variações forem escritas que ele retorna apenas uma.
Mas eu gostaria de fazer algo que ficasse mais legível e com regex eu acho que é possível de se fazer, porém eu nao tenho ideia de como. Alguém pode me dar uma ajuda?

Problema é que tenho algumas regras para essa remoção de caracteres, por exemplo, caracteres numéricos nao são editados, nem palavras que depois de se fazer o trabalho fique com apenas 3 algarismos. Entenderam?

Alguém tem ideia de como fazer algo legal mas ao mesmo tempo com uma boa performace?

Aqui está o meu código:

String [] enderecoLimpo = endereco.split("\s+");
		StringBuilder lista = new StringBuilder(endereco.length()*3);
		for(int i=0; i < enderecoLimpo.length; i++){
			String buffer = enderecoLimpo[i];
			StringBuilder listBuffer = new StringBuilder(buffer.length()*2);
			if(buffer.length()>3){
				for(int j=0; j<buffer.length(); j++){
					if(j != buffer.length()-1){
						String char1 = Character.toString(buffer.charAt(j));
						String char2 = Character.toString(buffer.charAt(j+1));
						if(!(char1.equalsIgnoreCase(char2)) &&  !char1.matches("[0-9]")){
							listBuffer.append(Character.toString(buffer.charAt(j)));
						}
					}else{
						listBuffer.append(Character.toString(buffer.charAt(j)));
					}
				}
			}
			if(listBuffer.length()>=3){
				lista.append(listBuffer.toString().trim());
			}else{
				lista.append(buffer);
			}
			lista.append(" ");
		}

3 Respostas

T

Você pode começar por aqui, e continuar.

class TesteRepetidos {
    public static void main(String[] args) {
        String teste = "Tesssteee";
        teste = teste.replaceAll ("(([A-Za-z])(\2)+)", "$2");
        System.out.println (teste);
    }
}
T

É claro que você tem de dar uma ajeitada. Por exemplo, se você passar a palavra “errada” para essa expressão regular, ela vai lhe retornar “erada”.

S

cara, obrigado mesmo. erao que eu precisava. sem tirar nem por, pois esse foi um criterio nosso, retirar todas as letras duplicadas, independente quais, mesmo se a palavra tiver. vlw mesmo…

Criado 16 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 3
Participantes 2