Estoy trabajando con un archivo de texto de gran tamaño que tiene miles de líneas de texto que contienen alguna información. A veces, el software se sumará al azar un personaje en el lugar que dejará nuestra carga. Estoy intentando crear un programa que encuentra una cadena que está codificado y luego las búsquedas dentro de la línea y reemplaza o elimina el carácter inválido. Aquí es algunos de los contenidos del archivo 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
En la línea de RDG17000386 DMD se puede ver que hay un período. No se supone que el período para estar allí y necesita ser reemplazado o eliminado del archivo.
En mi código actual I "m buscar cada línea que empieza con 'RDG' y funciona hallazgo, pero quiero limitar la búsqueda con sólo las líneas que incluyen 'DMD' dentro de la línea y he intentado cambiar el RDG a DMD , que no funcionó porque la línea no se inicia con DMD. no estoy del todo seguro de cómo quitar o sustituir el período comprendido entre el archivo. Esto es lo que mi apariencia código como hasta ahora.
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);
}
}
}
}
Utilizar. matches()
con una expresión regular
line.matches("^RDG.*DMD.*")
a sustituir el punto por un cero
if (line.matches("^RDG.*DMD.*")) {
line = line.replace('.', '0')
}