• ベストアンサー

テキストファイルにおいて任意の単語を含む一行を削除させたい

テキストファイルの任意の単語を含む一行を削除させるプログラムを作成したいです。 例えば、 test.txt 今日は久しぶりに晴れました。 とてもいい天気だったので、ショッピングに。 その後、アップルストアにて新発売のMacを触ってきました。 上記のようなテキストファイル(test.txt)に対して、 データベース等に格納されている単語のリストと参照させ、 リストにある単語を含んでいる行を削除させたテキストファイルを生成させたいです。 例えば、リストに"天気"の単語があれば、 以下のようなテキストファイルを生成させたいです。 result.txt 今日は久しぶりに晴れました。 その後、アップルストアにて新発売のMacを触ってきました。 このようにするには、どのようにプログラムを作成すればよいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.2

データベースから拾ってくる方法は考えてください。 "天気”という文字列がない行のみresult.txtに吐き出しています。 import java.io.*; import java.util.*; class Editor100 { public static void main(String args[]){ try{ BufferedReader reader = new BufferedReader(new FileReader("text.txt")); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("result.txt"))); String line; while((line = reader.readLine())!= null){ if((line.indexOf("天気"))==-1){ writer.println(line); } } reader.close(); writer.close(); } catch(IOException e){ System.out.println(e); } } }

shows
質問者

お礼

ご回答ありがとうございます。 無事問題を解決できました。 お返事が遅くなって申し訳ありませんでした。

その他の回答 (2)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

#2さんのindexOfをsubstringにしてみました。 import java.io.*; public class Sample { public static void main(String[] args){ try{ BufferedReader br= new BufferedReader(new FileReader("C:\\test.txt")); PrintWriter pw= new PrintWriter(new BufferedWriter(new FileWriter("C:\\result.txt"))); String str; int flag=0; while ((str = br.readLine())!= null) { if(str.length()==0){ break;} flag=0; for(int i=0;i<str.length()-2;i++){ if(str.substring(i,i+2).equals("天気")){ flag=1; } } if(flag==0){ pw.println(str); } } pw.close(); br.close(); }catch(IOException e){ System.out.println("IOエラー"); } } }

shows
質問者

お礼

ご回答ありがとうございます。 とても参考になりました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

java限定ですか?

shows
質問者

補足

はい。 できればjavaで作成したいと考えています。

関連するQ&A