Eu estou trabalhando com um arquivo de texto grande que tem milhares de linhas de texto que contenham alguma informação. Às vezes, o software irá adicionar aleatoriamente um personagem no lugar que irá falhar o nosso upload. Eu estou tentando criar um programa que encontra uma cadeia que é codificado e, em seguida, pesquisas dentro da linha e substitui ou remove o caráter inválidos. Aqui você encontra o conteúdo do arquivo de texto.
MTR17000386001000000000000000RA 124359
00010000004000000040000000 000NN NNE 000 N
RDG17000386
KWHL000000000R00000100000059534000405162019075929N000400000010N8486
000010500R 00000010010000059226
RFF1700038652126007 ERT
0000000952.0062500070014051620190759290005953476Type 7 0000N 6
MTR17000386001000000000000000RA 114818
00010000005000000050000000 000NN NNE 000 N
RDG17000386
DMDL000000000R000001000.0072666035305162019112344N000100000010N8486
005180500R 00000010010000072666
RFF1700038611861733 ERT
0000000952.0062500070000051620191123440007266680Type 7 0000N 6
Na linha de RDG17000386 DMD você pode ver que há um período. O período não é suposto estar lá e precisa ser substituída ou removida do arquivo.
No meu código atual I "m pesquisar cada linha que começa com 'RDG' e ele funciona Encontre, mas eu quero limitar a pesquisa apenas com as linhas que incluem 'DMD' dentro da linha e eu tentei mudar o RDG para DMD , que não funcionou porque a linha não começa com DMD. Eu não sou inteiramente certo como remover ou substituir o período a partir do arquivo. Aqui está o que minha aparência código como até agora.
import java.io.*;
public class ReadLineAndReplace {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("FilePath"));
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = br.readLine()) != null) {
if (line.startsWith("RDG")) {
//assuming the replace would be inserted here
System.out.println(line);
}
}
}
}
Usar. matches()
com uma expressão regular
line.matches("^RDG.*DMD.*")
para substituir o ponto com um zero
if (line.matches("^RDG.*DMD.*")) {
line = line.replace('.', '0')
}