Buscar palavra em txt e editar o que tem a seguir dela

12 respostas Resolvido
P

Boa tarde, estou com dificuldade para desenvolver um método que busque e edite uma palavra, por exemplo;

config 5
follow 0
followCheckL0 2
followT 2
followEn 1
itemsMaxWeht 89

eu quero buscar a palavra follow e modificar o 0 e tornar 1.

Obs: o txt tem varias linhas que muitas vezes tem palavras parecidas como follow e followcheck. e nem sempre estão em determinada ordem.

Agradeço

12 Respostas

F
String str = "qualquercoisaantes follow 0 qualquer coisa d e p o i s follow 0";

// imprime: qualquercoisaantes follow 1 qualquer coisa d e p o i s follow 1
System.out.println(str.replace("follow 0", "follow 1"));
    
// imprime: qualquercoisaantes follow 1 qualquer coisa d e p o i s follow 0
System.out.println(str.replaceFirst("follow 0", "follow 1"));

ps: tanto .replaceFirst() quanto .replaceAll() requerem uma regex (Expressões regulares) por parâmetro. Mas, o replaceFirst(), por exemplo, funciona desta forma também. ^^

Sucesso!

Documentação da classe: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

P

mas como faço a busca mp arquivo txt, antes desta edição.

F
String str = new String(Files.readAllBytes(new File("<caminho-do-seu-arquivo>").toPath()));
System.out.println(str);
P
try {
        str = new String(Files.readAllBytes(new File("C:\\Users\\pcwizard\\Desktop\\\\config.txt").toPath()));
        str.replaceAll("follow 0", "follow 2")
        System.out.println(str);
    } catch (IOException ex) {
        Logger.getLogger(novotestes.class.getName()).log(Level.SEVERE, null, ex);
    }

}

não funcionou.

F
  1. Está faltando ; (ponto e vírgula) na linha do .replaceAll().
  2. Use o .replace(). Ele já vai alterar todos os “follow 0” que encontrar no texto.

Qual o erro? Reveja se o caminho do arquivo está correto.

Uma das formas de fazer isto (e a mais simples que conheço) é esta.

O código está rodando perfeitamente!

ps: o .replaceAll() requer uma regex, o replace() requer um CharSequence.
ps2: o replaceFirst() também requer uma regex, mas ele também funciona passando uma String “simples”.

P

ele não busca a palavra follow 0 e altera o 0 pra 2
Ps eu corrigi as 4 barras.

P
String str;

try {

str = new String(Files.readAllBytes(new File(C:\Users\pcwizard\Desktop\\control\config.txt).toPath()));

str.replace(follow 0, follow 2);

System.out.println(str);

} catch (IOException ex) {

Logger.getLogger(novotestes.class.getName()).log(Level.SEVERE, null, ex);

}

ele não altera no arquivo txt

P

acabei de ver, ele altera o arquivo no netbeans mas não no arquivo no bloco de notas.

F
Solucao aceita

Resolução:

public class StringTest {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("<caminho-do-seu-arquivo>");
        String str = new String(Files.readAllBytes(path));
        try (BufferedWriter writer = Files.newBufferedWriter(path, Charset.forName("US-ASCII"))) {
            writer.write(str.replace("follow 0", "follow 1"));
        } catch (IOException x) {
            System.err.format("IOException: %s%n", x);
        }
    }
}
P

Funcionou, muito obrigado.
no Caso ele esta alterando outras opções de follow por ex. target_follow
eu posso usar Regex exemplo “[follow | 0-9]]”, “follow 2”

F

Se você quiser um replace mais “dinâmico”, manda bala com regex. o/

ps: sinalize a resposta com a solução para auxiliar outras pessoas que, eventualmente, possam fazer uso deste post.

P

Valeu!! novamente muito obrigado.

Criado 3 de janeiro de 2017
Ultima resposta 3 de jan. de 2017
Respostas 12
Participantes 2