2011-03-21 45 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