Recortar e Colar no Arquivo.txt

Pessoal

tenho um arquivo .txt onde eu busco nele uma sequencia de caracteres utilizando regex, eu consigo achar o que eu quero…blz

Só que eu preciso fazer o seguinte agora, meu mather me retorna o grupo encontrado e eu preciso mover esse grupo pra um outro lugar no arquivo.

Ex:

Layout

XXXXX;AAAA;BBBBB;CCCCCC;;YYYYY;ZZZZZ;

Eu encontro nessa linha minha sequencia, eu preciso pegar da posição onde eu achei e jogar em outra posição que estará vazia, os caracteres entre os pts e vírgula podem mudar, não é sempre a mesma sequencia.

Eu pensei no seguinte, quando eu acharo que procuro eu recorto, depois conto os pts e vírgula e quando chegar onde quero eu colo, mas como recortar e colar string em arquivo, estou com essa dúvida…simples mas uma dúvida :d

Abraço

Vc está usando java p/ isso, correto?

Vc pode quebrar o problema em 2 partes:

  1. vc acha o q quer recortar (via Matcher e Pattern), salva o group em uma variável local e remove esse conteúdo do texto (replaceFirst do group por “”).
  2. vc acha o local de destino no texto e insere o conteúdo da variável local nele (pode ser tb o replaceFirst, porém deve-se tomar cuidado com os caracteres “$” e “” no segundo argumento).

Olá barenko!

Estou usando java sim, entendi e irei usar o replace.

Agora meu problema é o seguinte, estou com o layout abaixo:

JOSE RG12345678-X;;;02/10/2009;;G;S;1;;0;40;11;12345678;AQUI;;;
#16009;SKOLL;5.00;1;8.00
#16009;AGUA;7.00;1;7.00
JOAO RG12345678-X;;;02/10/2009;;G;S;1;;0;40;11;12345678;AQUI;;;
#16009;AGUA;7.00;1;7.00
#16009;AGUA;7.00;1;7.00
#16009;AGUA;7.00;1;7.00
#16009;AGUA;7.00;1;7.00
#16009;AGUA;7.00;1;7.00
JOAO RG12345678-X;;;02/10/2009;;G;S;1;;0;40;11;12345678;AQUI;;;
#16009;AGUA;7.00;1;7.00
JOAO RG12345678-X;;;02/10/2009;;G;S;1;;0;40;11;12345678;AQUI;;;
JOAO RG12345678-X;;;02/10/2009;;G;S;1;;0;40;11;12345678;AQUI;;;

Eu devo recortar o rg que está logo após o nome e mandá-lo para o campo onde está escrito ‘AQUI’, eu pensei em contar os ‘;’ pq no arquivo não tenho a palavra ‘AQUI’ na posição onde preciso, e pra ajudar esse arquivo tem mtas linhas.

a posição onde eu quero é logo após o 14º ‘;’ alguém sabe como faço isso?

abaixo o código que comecei:

[code]import java.io.;
import java.util.regex.
;

public class Arquivo {

public static void main(String[] args) {

	try {
		
		File file = new File("C:\\ARQUIVO.TXT"); 
		FileReader reader = new FileReader(file);
		BufferedReader br = new BufferedReader(reader);
					
		String s;
		
		while( (s = br.readLine()) != null){
			String reg = "([rg,RG\\s])\\d\\d\\d\\d\\d\\d\\d\\d([-])?(\\w)?\\d?";
			Pattern p = Pattern.compile(reg);
			Matcher m = p.matcher(s);
			boolean x;
			if(x = m.find()){
				System.out.println(m.group());
			}

		}
	}catch (Exception e) {
		
	}
}

}[/code]

Consigo achar o RG, mas empaquei no recorte e colar pq não sei como fazer pra achar a posição certa.

:?

Veja se é isso q vc quer:

[code]package extensions.util.db.relationaldao.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Tst {

public static void main(String[] args) throws Exception {
BufferedReader br = null;
String buffer = null;
String patternString = "(?i) *(rg\\d{6,10}-X;)";
String removePattern = "$1$3";
String replacePattern = "AQUI";
Pattern pattern = Pattern.compile(patternString);

    try {
    br = new BufferedReader(new FileReader(new File("C:\\ARQUIVO.TXT")));

    while ((buffer = br.readLine()) != null) {
	Matcher m = pattern.matcher(buffer);
	if (m.find()) {
	    System.out.println(buffer.replaceFirst(m.group(), "").replaceFirst(replacePattern, m.group()));
	}

        }
} finally {
    if (br != null) br.close();
}
}

}[/code]