2017-02-16 5 views
-2

私はJavaソースファイルを読み込んでそれからすべてのコメントを削除する必要がある宿題に取り組んでいます。残りのスタイリングは同じままでなければなりません。Javaコードからすべてのコメントを正規表現なしで削除します

私はすでに正規表現を使用してタスクを完了しています。

しかし、私はを探していますが、正規表現を使用しないで同じことを達成しています。

例入力

// My first single line comment 

class Student { 

    /* Student class - Describes the properties 
    of the student like id, name */ 

    int studentId; // Unique Student id 
    String studentName; // Name of the student 
    String junk = "Hello//hello/*hey"; 

} // End of student class 

結果

class Student { 

    int studentId; 
    String studentName; 
    String junk = "Hello//hello/*hey"; 

} 

私の考えでは、各ライン

1を読むことです)最初の2つの文字

をチェック
  • それは//で始まる場合、それは*/

2)別のシナリオを扱うになるまで/ * ==>すべての行を削除して開始した場合==>ライン

  • を削除

    例 - int studentId; //コメントまたは/ *コメント*/

    誰かがこれに対してより良いアプローチを提供できますか?

  • +0

    最初の2文字をチェックする代わりに、 '//'を検索し、そのポイントから新しい行を削除します。 '/ *'と同じ考え方 '* /'まで削除してください。 –

    +0

    @HypnicJerkこの度はありがとうございます。私はテキストの行全体を検索し、私は文字列の宣言がある場合 - 文字列junk = "Hello // hello";これは問題を正しく引き起こす可能性があります – user3451476

    +0

    @ user3451476それはどのように見え、どのように見た目をしたいのかという文字列の例を提供することができます –

    答えて

    6

    正規表現以外のものを試したい場合は、状態マシンが考えられます。少なくとも5つの状態があります:開始、通常のコード、In /コメント、In/* ... * /コメントと停止。

    開始状態で開始します。各状態は、異なる状態に切り替える何かになるまで入力を処理します。停止状態は処理を終了し、ファイルのクローズなど必要な整理を行います。

    あなたはひどく形成された入力を処理する必要があることに注意してください、とも卑劣な入力:

    System.out.println("A Java comment may start with /* and finish with */"); 
    

    私はそれを処理する方法を動作するようにあなたにそれを残します。

    関連する問題