2011-10-27 4 views
0

私はHTMLレンダラーを作っています。私はStreamTokenizerに読み込まれているhtmlファイルを持っています。現時点ではそれが正しいトークンをプリントアウトし、私のhtmlファイルで私のvarbilesがStreamTokenizer、htmlファイルをレンダリングしますか?

<html><p>$myVarToBeRendered$<p></html> 

は私が正しいトークンはそれがquoteCharを使用してHTML本体とVARSを分割すなわち取得ドルなどで囲まれた( '$を指定します「)

FileReader in = new FileReader(file); 
    BufferedReader reader = new BufferedReader(in); 
    StreamTokenizer tok; 
    tok = new StreamTokenizer(reader); 
    tok.resetSyntax(); 
    tok.wordChars(0, 255); 
    tok.quoteChar('$'); 

私はトークンを読ん文字列トークン

"<html><p>" , "myVarToBeRendered" and "<p></html>" 

けれども、私は明らかに引用として識別されたトークンmyVarを交換する必要があり得ます。このmyVarは、各変数にレンダリングされる文字列値を保持するHashMapのキーとして使用されます。トークンが見積もりであるかどうかをチェックする方法はありますか? like:

if (tok.next - is a quote or inside my quotes) 
    Then replace this var name with its related HashMap value 

私はインターネットを磨き、例や類似の質問を見つけられませんでした。

または私が使用できる任意の方法で、どのトークンがHashMapで使用する変数であるかを特定できます。申し訳ありませんが、これが意味をなさない場合は、私がしようとしていることを理解して欲しい!!

多くのおかげでサム

答えて

1

は、私は質問を誤解されることがありますが、単純にmyMap.containsKey(myVarToBeRendered)を呼び出すことにより、マップであなたのトークンの存在を確認することができます。

別の注記では、正規表現パターンマッチングを使用して、HTMLからの置換変数を抽出することは、StreamTokenizerを使用するよりも良いアイデアのようだと思います。

+0

私はcontainsKeyを使用して、その方法について忘れてしまいました!、私はregexを使用するつもりでしたが、最初に文字列としてファイルをロードしてから、?私の推論は、ロード中にFileStreamをロードする方が効率的です。 –

+0

気楽に試してみて、きれいに作業しました:) –

+0

すごいです! :) – mazaneicha

関連する問題