StringBuffer ='(

6 respostas
A

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.

6 Respostas

Adriano_Almeida

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);
LPJava

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

Fierodd

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!

A

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!!

ViniGodoy

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”.

A
dae galera... infelizmente não funcionou não.. tentei isso:
StringBuffer strBuffer = new StringBuffer();
 		strBuffer.append("Farofa de xpto");
 		
 		strBuffer = new StringBuffer(strBuffer.toString().replaceAll("xpto", "farofa"));
 		
 		System.out.println(strBuffer);
.. 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...:
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;
    }

..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

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.

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

Criado 13 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 6
Participantes 5