2012-01-21 5 views
1

私は、区切られたテキストを解析するパーサーに取り組んでいます。例位置区切りのテキスト解析用のデザインパターン?

位置1-10:フィールド 位置11-20:フィールドb 位置21-30:フィールドc など

私は実装に使用できる任意のデザインパターン?私は私が訪問者のパターンを使用する必要がありますと信じて

+3

このためにパターンが必要な理由は何ですか?パターンがあるからといってそれを使わなければならないわけではありません。 –

答えて

4

Visitorパターン?ただ、行毎にファイルを読み込むとsubstring()を使用します。

String line = //... 
String a = line.substring(0, 10); 
String b = line.substring(10, 20); 
String c = line.substring(20, 30); 

私は何かが足りないのですか?あなたの質問を明確にすることはできますか?

+0

私はそれも考えました。私はそれを複雑にしているようだ。 = p – youcanlearnanything

1

入力テキストの形式が常に同じ場合にパターンを使用する必要はありませんが、形式を変更する必要がある場合があります。たとえば、アプリケーションに今後追加ファイル形式をサポートする可能性があると思われる場合は、Strategy Patternが便利です。

class LineData { 
    public String a; 
    public String b; 
    public String c; 
} 
interface FileParser { 
    List<LineData> parse(String fileName); 
} 
class FileParserFixed : FileParser { 
    public int widthOfA; 
    public int widthOfB; 
    public int widthOfC; 
    public List<LineData> parse(string fileName) { 
    } 
} 
class FileParserDelimited : FileParser { 
    public char delimiter; 
    public List<LineData> parse(string fileName) { 
    } 
} 

FileParserのインターフェイスにプログラムするこのアプローチを使用してアプリケーション、および区切りや固定幅のファイルを解析する構文解析との違いは、実行時に選択FileParserの実装にカプセル化されるだろう。

関連する問題