StringBuffer ='(

Boa tarde Galera
Antes de mais nada, ja procurei no google, API, ja procurei aqui no fórum… e eh claro q n devo te procurado muito bem, pois acho meio dificil alguem n ter passado por isso…masssss, se alguem souber um link ou simplesmente o método para isso eu agradeço muito…

Duvida:
Tenho um StringBuffer e seu conteudo é algo do tipo:

13467 145467321bbb
564241 45556212sdr

pois bem… digamos q eu preciso alterar apenas uma pequena sequencia,
alterar a subString “bbb” para “aaa” e salvar o arquivo agora alterado…tendo em seu conteudo agora assim:

13467 145467321aaa
564241 45556212sdr

…atravez de um while eu ja consigo pesquizer e buscar a informação q eu quero…oq esta me faltando eh uma forma de iniserir outra String na quela posição (tbm ja tenho a posição), substituindo o conteudo original pelo q eu vou passar agora …
se fosse uma string eu usaria:

string.replaceAll(posição, stringNova) ;

porem eh um StringBuffer e isso n funciona…

Alguem por favor me consiga um método q eu possar usar ou me indique um tutorial q explique isso… mas por favor algo extremamente direto ao problema… nada de www.google.com

vlw ae galera…e desculpe o transtorno.

Deve haver uma maneira mais elegante de se fazer isso, mas aí vai:

		StringBuffer strBuffer = new StringBuffer();
		strBuffer.append("Farofa de xpto");
		
		strBuffer = new StringBuffer(strBuffer.toString().replaceAll("xpto", "farofa"));
		
		System.out.println(strBuffer);

assim se vc gravar o valor… no arquivo alterar depois… vc executar o processo de criacao de e gravação no arquivo ele grava o dado por cima… eh eu acho q faria isso… poe a sintaxe ai

uma sugestão … nada mto bonito

//reze pra não explodir a string
String s = stringBuffer.toString();

s.replaceAll(pos, stringNova);

//põe toda a string no StringBuffer agora
//vc teria que limpar o conteúdo desse ou criar um novo, mas não lembro se StringBuffer tem um método tipo clear()
stringBuffer.append(s);

se encontrar uns métodos que deixem isso ae mais bonito posta de volta por favor!

ba…vcs são rapidos!!
huahuahua

Eu vou testar solução do Pafuncio (q se dane a elegaâcia… eu ja to apavorado!! huahua)

quanto a questão de passar tudo para String pode n ser muito boa uma vez q esse arquivo eh muito grande…ali dei um pequeno exemplo mas esse texto pode passa de 2MB soh de códigos, ja por isso q estou usando um StringBuffer tbm, pois pelo q li era o indicado para arquivos q vão ser modificados, por isso achei estranho n ter nenhum metodo para uma coisa tão simples…

vou testar as soluções e volto aqui ainda hj para dar o resultado…

Obrigado por enquanto galera!!!
vlw mesmo!!

Você também pode usar as classes Matcher e Pattern para fazer a procura e a substituição no texto. Elas permitem que, através de uma expressão regular, você “navegue” pelo seu String, encontre padrões e trabalhe com eles. Há extensa documentação sobre ambas as classes no próprio javadoc delas.

A vantagem é que as expressões regulares permitem alterar padrões mais complexos.

Um exemplo de padrão mais complexo seria “tudo que começar com ab e terminar com cd, não interessando o que tiver no meio”. Ou então, “alterar locais onde apareçam somente números cercados de espaços”.

dae galera… infelizmente não funcionou não… tentei isso:

[code]StringBuffer strBuffer = new StringBuffer();
strBuffer.append(“Farofa de xpto”);

	strBuffer = new StringBuffer(strBuffer.toString().replaceAll("xpto", "farofa"));
	
	System.out.println(strBuffer);[/code]

… na verdade meu metodo vai alem desse, mas eu adaptei para usar na minha aplicação…
u vou postra aqui exatamente oq eu fiz… e podem atirar pedra a vontade! heheh…soh novo em Java e programação em geral… mas axo q olhando meu codigo ja vai da pra te uma noção do que eu to tentando fazer…:

[code]public static StringBuffer alteraLinhas(StringBuffer texto,
int[] coordenada,
String alteraQuando,
String alteraPara){

    StringBuffer textoAlterado;
    String tipo = Integer.toString(coordenada[0]);
    
    while(texto.substring(0,2).equals(tipo)&&
            texto.substring(coordenada[1],coordenada[2]).equals(alteraQuando)&&
            !texto.substring(coordenada[3],coordenada[4]).equals(alteraPara)){
        
        String stg = texto.substring(coordenada[3],coordenada[4]);
        texto = new StringBuffer(texto.toString().replaceAll(stg,alteraPara)); 
        
    }
    
    System.out.println("Executou o método alteraLinhas()");
    textoAlterado = texto;
    System.out.println(textoAlterado);
    return textoAlterado;
}[/code] 

…oq resultou foi um StringBuffer contendo apenas aquela linha(há mais de 200 linhas) e n substituiu a string. :cry:

ta ae galera… se ainda assim não ficar claro por favor me perguntem q eu explico…
vlwwwwwwww

…enquanto isso vou dando uma olhada nessas classes :wink: