Substituir o próximo caractere repetido. Como faço?

Olá, Pessoal,

Sou novo aqui, mas vamos direto ao ponto.

Como posso, em Java, substituir o segundo caractere repetido ?

ex.:

Tenho uma frase: “O Rato Roeu”.

Como posso retirar apenas o segundo “R” ?

"Queria que o programa passasse pelo primeiro e apagasse somente o segundo… ou passasse pelo primeiro “o” e apagasse apenas o segundo.

Os métodos da classe String podem ajudar.

public String removeSegundoCharRepetido( String txt, char c ) { int i1 = txt.indexOf(c); if( i1 > -1 ) { int i2 = txt.substring(i1+1).indexOf(c); if( i2 > i1 ) { return txt.substring(0,i2) + txt.substring(i2+1); } } return txt; }

Não sei se está 100% certo, mas é bem por aí. Mas pode ser melhorado.

Você quer apagar apenas o segundo, ou o último encontrado? Ou todos após o primeiro?

Dê uma olhada na api de String, que te dá métodos para encontrar a primeira ocorrência, a última ocorrência, dar replace de caracteres, etc. Ou então estude regular expression para fazer algo mais poderoso se for o caso.

Você pode usar regex…

De uma olhada na API do java.

Alguém tem um material bom de ERs ?? em java

http://java.sun.com/docs/books/tutorial/essential/regex/

substitui isso:

^([^R]R[^R])R

por isso

\1

Ou seja

substitui “tudo antes do segundo R, mais o segundo R” por “tudo antes do segundo R”

Tem q trabalhar com groups e backreference. facil :wink:

[quote=peczenyj]substitui isso:

^([^R]R[^R])R

por isso

\1

Ou seja

substitui “tudo antes do segundo R, mais o segundo R” por “tudo antes do segundo R”

Tem q trabalhar com groups e backreference. facil ;-)[/quote]

Isso é expressão regular? Onde tu aprende? Realmente muito util se souber usar.