我正在制作HTML渲染器。我将html文件读入StreamTokenizer。目前它打印出正确的令牌,并在我的html文件中指定我的varbiles用美元包围,例如
<html><p>$myVarToBeRendered$<p></html>
我得到了正确的令牌,即它使用quoteChar('$')
分割html正文和变量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中使用的变量。对不起,如果这没有意义,希望你明白我在做什么!!
非常感谢Sam
答案 0 :(得分:1)
可能是我误解了这个问题,但你可以通过简单地调用myMap.containsKey(myVarToBeRendered)来检查地图中是否存在你的令牌。
另外,我认为使用正则表达式模式匹配从你的html中提取替换变量似乎比使用StreamTokenizer更好。