- ベストアンサー
テキストファイルにおいて任意の単語を含む一行を削除させたい
テキストファイルの任意の単語を含む一行を削除させるプログラムを作成したいです。 例えば、 test.txt 今日は久しぶりに晴れました。 とてもいい天気だったので、ショッピングに。 その後、アップルストアにて新発売のMacを触ってきました。 上記のようなテキストファイル(test.txt)に対して、 データベース等に格納されている単語のリストと参照させ、 リストにある単語を含んでいる行を削除させたテキストファイルを生成させたいです。 例えば、リストに"天気"の単語があれば、 以下のようなテキストファイルを生成させたいです。 result.txt 今日は久しぶりに晴れました。 その後、アップルストアにて新発売のMacを触ってきました。 このようにするには、どのようにプログラムを作成すればよいでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データベースから拾ってくる方法は考えてください。 "天気”という文字列がない行のみ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); } } }
その他の回答 (2)
- fortranxp
- ベストアンサー率26% (181/684)
#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エラー"); } } }
お礼
ご回答ありがとうございます。 とても参考になりました。
- yambejp
- ベストアンサー率51% (3827/7415)
java限定ですか?
補足
はい。 できればjavaで作成したいと考えています。
お礼
ご回答ありがとうございます。 無事問題を解決できました。 お返事が遅くなって申し訳ありませんでした。