Java搜索文本文件中的字符串并替换或删除字符串中的字符

时间:2019-05-22 16:13:33

标签: java

我正在处理一个大型文本文件,该文件具有数千行包含某些信息的文本。有时,软件会随机在适当位置添加一个字符,这将使我们无法上传。我正在尝试创建一个程序,该程序查找经过硬编码的字符串,然后在行中搜索并替换或删除无效字符。这是文本文件的一些内容。

    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

在RDG17000386 DMD的行上,您可以看到有一个句点。该句点不应存在,需要将其替换或从文件中删除。

在我当前的代码中,我正在搜索以“ RDG”开头的每一行,并且可以找到,但是我想将搜索范围限制为仅在行内包含“ DMD”的行,并且我尝试更改从RDG转换为DMD,此操作不起作用,因为该行不是以DMD开头。我不确定如何从文件中删除或替换句点。到目前为止,这是我的代码。

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

1 个答案:

答案 0 :(得分:4)

使用。 matches()(带有正则表达式)

line.matches("^RDG.*DMD.*")

以零代替点

if (line.matches("^RDG.*DMD.*")) {
    line = line.replace('.', '0')
}