文字列のテキストファイルを検索し、文字列内の文字を置換または削除するJava

ProgrammerLarry:

私はいくつかの情報が含まれているテキストの行数千人を持っている大規模なテキストファイルで働いています。時にはソフトウェアは、ランダムに私たちのアップロードが失敗する代わりに文字を追加します。私は、ハードコーディングされた後、ライン内の検索と置き換えたりinvalided文字を削除された文字列を見つけたプログラムを作成しようとしています。ここでは、テキストファイルの内容の一部です。

    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 "mの各行そのスタートを検索『』と、それを見つけるのに動作しますが、私には、線のみで検索を制限したい『ライン内のDMDを』と私はDMDにRDGを変更しようとしましたラインは、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);       
        }
    }
}
}
ヨアキムダニエルソン:

使用する。matches()正規表現で

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

ゼロでドットを交換します

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=204467&siteId=1
おすすめ