javaプログラムでテキストを一行ずつ読み込みながら検索する時 コメント部分は無視して検索したいです。

つまり「//」から始める行と 「/*」と「*/」のなかにある行は全部無視したいです。
「//」から始める行は正規表現を使ってできましたが、(下のソース)
// 「//」コメント部分を空白に置き換える
if (line.indexOf("//") != -1) {
line = line.replaceAll("//.*", "");
}

「/*」と「*/」のところができません。

どなたかご教授していただければ幸いです。

よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/07/08 13:24:56
  • 終了:2009/07/08 14:16:18

ベストアンサー

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/07/08 13:56:21

ポイント60pt

美しいコードではありませんが、1行ずつ処理するなら・・・

// ループ前に行う処理。
int mode;
int mode = 1; // 複数行コメントの中であれば2、それ以外は1とする。


// ループの中での1行毎の処理
if (line.indexOf("*/") != -1) { // コメント終端に達したのでmodeを1に戻す。行は削除。
    line = '';
    mode = 1;
} else if (line.indexOf("/*") != -1) { // コメント開始なので modeを2にセット。行は削除。
    line = '';
    mode = 2;
} else if (mode == 2) { // コメント中なので行を削除。
    line = '';
} else if (line.indexOf("//") != -1) { // 1行コメントがあるかチェックして、コメント部分削除。
    line = line.replaceAll("//.*", "");
}

※スミマセンが、動作テストは行わずいきなり書いています。

 適宜内容を確認しながらテストを行ってください。


以下あまり関係ありませんが、URL必須との事なので・・・。

question:1246344237

とほほのJava入門

id:kimu_507

おかげ様でできました。早速実装してみましだが、完璧でした。

本当に有難うございます。これからもなんがあったらお願いします。

2009/07/08 14:14:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません