Substituir caracteres em String

oi pessoal td bem?

entao… estou com um probleminha!

eu tenho um arquivo txt com o seguinte conteudo :

[quote]|I050|01012002|01|S|04|1112|111|BANCO MOVIMENTO|
|I050|01012002|01|S|05|111201|1112|BANCO MOVIMENTO|
|I050|01012002|01|A|06|1112010000024|111201|BANCO DO BRASIL|
|I052||1112010000024|
|I050|01012002|01|A|06|1112010000036|111201|BANCOB C/C 02010-9|
|I052||1112010000036|
|I050|01012002|01|A|06|1112010000048|111201|BANCOB C/C 02018-4|
|I052||1112010000048|
|I050|01012002|01|A|06|1112010000050|111201|BANCOB LTDA C/C 50-7|
|I052||1112010000050|
|I050|01012002|01|A|06|1112010000061|111201|BANCOB RUBIATABA LTDA|
|I052||1112010000061|
|I050|01012002|01|A|06|1112010000073|111201|BRADESCO S/A|
|I052||1112010000073|
|I050|01012002|01|A|06|1112010000085|111201|ITAU S/A|
|I052||1112010000085|
|I050|01012002|01|A|06|1112010001806|111201|CAIXA ECONOMICA FEDERAL|
|I052||1112010001806|
|I050|01012002|01|A|06|1112010006634|111201|BANCO SAFRA S.A|[/quote]

eu ja consegui fazer a leitura do arquito txt, e armazenar tudo em um String chamado ( lerLinha ), o problema é:

eu quero substituir em cada linha o terceiro " | " (pipe) pelo numero 5, eu ja utilizei o meto StringTokenizer, Substring… e não estou conseguindo,
entao agora estou utilizando um novo metodo para tentar substituir mais nao estou tendo sucesso!

segue o metodo

[code] public void substituirCaracteres() {
StringBuffer strb = new StringBuffer(lerLinha);
strb.setCharAt(3, ‘5’);
System.out.println(strb);

}[/code]

se alguem puder me ajudar a resolver esse problema eu agradeço… obrigado!

Talvez as classes do Commons Lang te ajudem:
http://commons.apache.org/lang/

Pode arriscar o Commons CVS:
http://commons.apache.org/sandbox/csv/

Veja que o que você tem é um tipo de arquivo “Comma-separated values”, só que ao invés da vírgula você tem “|”

Logo, deve pesquisar como tratar desse tipo de arquivo em java, entendeu?

Opa da uma olhada e ve se te ajuda

String teste = "|I050|01012002|01|S|04|1112|111|BANCO MOVIMENTO|";
teste = teste.replaceAll("(\\|I\\d+\\|\\d+)\\|(.*)", "$15$2");
System.out.println(teste);

valewww pessoalll… consegui… brigadao pela ajuda!

segue abaixo o metodo que utilizei:

[code]
public String substituirCaracteres(String caractere) {
int contador = caractere.length();
int conta = 0;
for(int i=0; i< contador; i++ ){
if(caractere.substring(i, i+1).equals(txtDe.getText())){
int posicao = i+1;

         conta+=1;
     if(conta==Integer.parseInt(txtPosicao.getText())){
                return caractere.substring(0, posicao-1)+txtPara.getText()+caractere.substring(posicao);

     }
     }
 }

return null;
}[/code]

[code] //Apenas para usuário não precisar passar parâmetros "desnecessários"
int getIndex(String str, String search, int depth) {
return getIndex(str, search, 0, depth, 0);
}

int getIndex(String str, String search, int from, int depth, int count) {
    if(str.length() < from || depth == 0) return -1;
    int index = str.indexOf(search, from);
    if(++count >= depth) return index; //Para não precisar entrar outro nível para retornar
    
    //Continua busca a partir do indice seguinte
    return getIndex(str, search, index + 1, depth, count);
}

[/code]
USO

[code]
String t = “parte1|parte2|parte3|parte4”;

    String change = "5";

    int indice = getIndex(t, "|", 3); //Altere o último parâmetro para o pipe que precisa
    if(indice > 0) {
        String init = t.substring(0, indice);
        String end = t.substring(indice+1);
        System.out.println(init+change+end);
    } else {
        System.out.println("No pipe found");
    }[/code]