2011-03-21 44 views
0
string template = "group simple; apply(it) ::= << $it:bold():italics()$ >> "; 
StringTemplateGroup stg = new StringTemplateGroup(new StringReader(template)); 
stg.DefineTemplate("bold", "<b>$it$</b>"); 
stg.DefineTemplate("italics", "<i>$it$</i>"); 
StringTemplate st = stg.GetInstanceOf("apply"); 
st.SetAttribute("it", "name"); 
Console.WriteLine(st.ToString()); 

的上述结果是$它:黑体():斜体()$我期待<i><b>name</b></i>字符串模板 - 结果从文件读取时不同/从字符串

但是当模板从文件读取,它按预期工作。

StringTemplateGroup stg = new StringTemplateGroup("page", "../../Templates"); 
stg.DefineTemplate("bold", "<b>$it$</b>"); 
stg.DefineTemplate("italics", "<i>$it$</i>"); 
StringTemplate st = stg.GetInstanceOf("apply"); //apply.st => $it:bold():italics()$ 
st.SetAttribute("it", "name"); 
Console.WriteLine(st.ToString()); 

输出为预期<i><b>name</b></i>

为什么不是在第一种情况下工作?我错过了什么吗?

回答

1

< ...>是组文件中的默认分隔符。注意StringTemplate v4将在一周左右出局。

+0

我曾尝试使用<...>,结果是名称:bold():italics()。 – Vijay 2011-03-23 04:53:06

+1

哦。这是C#版本;应该工作一样,但是......显然不是! – 2011-03-25 01:00:39