StreamTokenizer、htmlファイルをレンダリングする?

私はHTMLレンダラーを作っています。私はStreamTokenizerに読み込まれているhtmlファイルを持っています。現時点では正しいトークンが出力され、htmlファイルにはドルで囲まれたvarbilesが指定されています。

<html>
$myVarToBeRendered$
</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>
" , "myVarToBeRendered" and "
</html>"

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

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

私はインターネットを精査して、一緒に私を助けるための例や類似の質問を見つけることができません!

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

多くのおかげでサム

0

1 答え

私は疑問を誤解しているかもしれませんが、myMap.containsKey(myVarToBeRendered)を呼び出すだけでマップ内のトークンの有無を確認できます。

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

1
追加された
yahはcontainsKeyを使うのがいいアイデアだ、私はそのメソッドを忘れてしまった!、私はregexを使うつもりだったが、最初にファイルを文字列としてロードしてから?私の推論は、FileStreamの読み込みが読み込み中にそれを変更する方が効率的だった
追加された 著者 Sam Palmer,
乾杯はちょうどそれを試して、美しく働いた:)
追加された 著者 Sam Palmer,
それは素晴らしいです! :)
追加された 著者 mazaneicha,