1

Javaの助けを借りて検索と置換を行いたいです。

ファイル名とその内容を含む TreeMap があります。単語とその意味を含む別の TreeMap があります。

ファイルの内容を検索し、見つかった単語をその意味に置き換えたい。

ありがとう

PS: 課題ではありません。簡易読み込みファイルと置換機能を使用しました。しかし、私はそれを行うための迅速な方法が必要です。サンプルコードまたは参照。高く評価されます。

4

4 に答える 4

1

問題が圧倒的な場合に役立つ一般的な開発アドバイスをいくつか紹介します。

まず、リストを書き留めます。これは、問題を解決すると思われるアルゴリズムです。あなたの場合は試してみてください:

  • ツリーマップ1のファイルごとに
  • そのファイルのエントリごとに
  • 現在のファイルの各行
  • 2番目のツリーマップで各用語を検索します
  • 見つかった用語ごとに、定義に置き換えます。

次に、これらの各ステップに進み、それを強化します。最初のもののためにあなたはすべきです

  • ツリーマップ1のファイルのリストを繰り返し処理します
  • 次のファイルを開く
  • 内容を読み始める

各ステップをどのように実行するかがわかるまで、現在「JustCoding」を想定できない各ステップに対してこれを実行します。

これが完了したら、リストから1つのことを実行する非常に基本的なアプリケーションを作成することをお勧めします。たとえば、ファイルを開きます。ここでは、junitテストを作成したり、メインでテストを作成したりするのに非常に役立ちます。ファイルを開き、そこから読み取ることができることを確認してください。

この時点で、コードに追加し続けます。少し追加してから、再コンパイル/再テストします。5年間コーディングするまですべての行を再テストしてから、2行または3行ごとに移動します。

コードをテストするためにテストを更新し続けます。古いテストを破った場合は、それを書き直して、捨てないでください。

繰り返します。

これがお役に立てば幸いです。

于 2010-08-27T22:08:33.877 に答える
0

基本は次のとおりです。

  • entrySetをループします
  • エントリごとに値を取得します
  • その値を単語に分割する
  • 単語検索ごとに、辞書内のその単語
  • 見つかった場合は、その単語を翻訳済みのstringbuilderに追加します
  • それ以外の場合は、オリジナルを追加します
  • スペースを追加する
  • stringbuilder.toStringを使用したマップエントリのsetvalue
于 2010-08-27T22:06:52.883 に答える
0

この例は、TreeMapだけでなく、マップインターフェイスを実装するすべてのクラスで機能します。

public void searchAndReplace(Map<File, byte[]> fileToContentMap, Map<String, String> wordToDefinitionMap) {

    // for each file
    for (File f : fileToContentMap.keySet()) { 
        // get the file's contents
        String contents = new String(fileToContentMap.get(f));

        // replace the contents with definitions
        for (String word : wordToDefinitionMap.keySet()) {
          contents = contents.replaceAll(word, wordToDefinitionMap.get(word));   
        }

        // make sure to update the contents in the array
        fileToContentMap.put(f, contents.getBytes());

        // note, remember to update the physical file as well

    }
}
于 2010-08-27T22:39:16.957 に答える
0

すべてのファイルの内容を格納するために TreeMap を使用しません+ .
とにかくコンテンツを読む必要があるので、最初にそれらすべてを保存することに利点はありません+
一度に 1 つのファイルを読み取り、処理して保存します。

Java の NIO パッケージを見てください。NIOの例のページには、ファイルのリスト (Grep.java) を検索する例があります。

+ {他の場所} が必要ない場合

于 2010-08-27T22:51:29.560 に答える