comparação de caracteres

Eu preciso comparar caracteres, por exemplo, tenho a String =" ||| abc|def| |"
e o retorno deve ser String="|abc|def|"
ou seja a cada barra reta, eu verifico o proximo caracter, se o proximo caracter for outra barra reta eu devo excluir alguma das barras.
Eu to na duvida se uso objetos Character ou StringTokenizer, alguma sugestão?

 string.replaceAll("\|+", "|"); 

ou seja, substituir uma ou mais barras (pipes) por 1 único pipe…

vc pode usar token para isso ou usar o metodo chatAt() que ti retorna um char e vc pode comparar.

String s ="camilo";
System.out.println(s.charAt(2)); // imprime m

flw!!

mas neste caso, ele so faz a modificacao qnd tem 2 ou mais barras, sem houver espaco entre elas, pq se houver espaco ele nao faz a modificacao,
como eu conserto isso?

mas este charAt, ele distingue espaco em branco?
por exemplo
String=“Isto e um teste”
charAt(4), me retorna um espaco em branco, ou “e”??

string.replaceAll("\|(\s*\|)*", "|");

ou seja: um pipe seguido de grupos de espaços (opcional) e pipe

viva as expressões regulares =)

eu copiei esta construcao ai de cima , mas ta danu um pau, da uma verificada p mim por favor

aqui funcionou

System.out.println("|  | | ||asdf ||".replaceAll("\|(\s*\|)*", "|"));

retornou

|asdf |

http://www.guj.com.br/posts/list/42967.java#227913

neste tópico trata sobre o charAt e mostra também como tratar espaços