2011-10-27 61 views
0

我想提出一個HTML渲染器。我將html文件讀入StreamTokenizer。目前,它打印出正確的令牌,並在我的HTML文件中指定我varbiles封閉在美元如StreamTokenizer,呈現一個html文件?

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

我得到正確的令牌,即它通過使用quoteChar分裂HTML主體和VAR('$ 「)

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中的一個鍵,該鍵持有要呈現給每個變量的字符串值。有沒有辦法檢查令牌是否是報價?如:

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那是一個好主意,我忘了那個方法!我會使用正則表達式,但它意味着首先加載文件作爲一個字符串,然後檢查?加載的FileStream是會更有效進行修改,同時加載 –

+0

乾杯只是嘗試了一下工作和精美:) –

+0

這真棒當我的理由了! :) – mazaneicha