官方下载 www.StringTemplate.org .Net 组件,在项目中引用antlr.runtime.dll和StringTemplate.dll
引用 using Antlr.StringTemplate;
多个值的语法如下:$value;null="xxx",separator=", "$ 定义value属性,当value为null则显示xxx,如果有多个属性值则以“,”号进行分隔(其中null和separator分别定义属性为空时的默认值和分隔符)。
//简单变量替换
//StringTemplate hello = new StringTemplate("Hello, $name$");
//hello.SetAttribute("name", "World");
//简单变量替换
//StringTemplate hello = new StringTemplate("SELECT $column; separator=\",\"$ FROM $table$;");
//hello.SetAttribute("column", "name");
//hello.SetAttribute("column", "email");
//hello.SetAttribute("column", "sex");
//hello.SetAttribute("table", "User");
//复杂变量替换
//StringTemplate hello = new StringTemplate("复杂变量替换 $Text;null=\"为空值\",separator=\",\"$ 真是复杂啊!");
//hello.SetAttribute("Text", "中国", null, "台湾", "印度");
//键值类型替换
//StringTemplate hello = new StringTemplate("对象变量替换 姓名:$KeyList.Name$, 年龄:$KeyList.Age$ ");
//Hashtable ht = new Hashtable();
//ht.Add("Name", "李四");
//ht.Add("Age", "35");
//hello.SetAttribute("KeyList", ht);
//同时显示多个变量
//StringTemplate hello = new StringTemplate("变量相加 $[Temp1,Temp2,Temp3]$");
//StringTemplate hello = new StringTemplate("变量相加 $[Temp1,Temp2,Temp3];separator=\",\"$");
//hello.SetAttribute("Temp1", "变量1");
//hello.SetAttribute("Temp2", "变量2");
//hello.SetAttribute("Temp3", "变量3");
//模板调用
//StringTemplateGroup sg = new StringTemplateGroup("GroupTest");
//sg.DefineTemplate("Box", "中华人民共和国中华人民共和国,中华人民共和国");
//StringTemplate hello = sg.DefineTemplate("List", "下面是我调用Box模板内容:\n$Box()$");
//给调用模板传参数
//StringTemplateGroup sg = new StringTemplateGroup("GroupTest");
//sg.DefineTemplate("BoxA", "我不来了()");
//sg.DefineTemplate("Box", "中华人民共和国,中华全国 Title: $Title$ !!");
//StringTemplate hello = sg.DefineTemplate("List", "下面是我调用Box模板内容:\n$Box(Title=\"标题值\")$"); //传变量值
//StringTemplate hello = sg.DefineTemplate("List", "下面是我调用Box模板内容:\n$Box(Title={$Titles$})$"); //传变量
//StringTemplate hello = sg.DefineTemplate("List", "下面是我调用Box模板内容:\n$Box(Title=BoxA())$"); //传模板
//hello.SetAttribute("Titles", "标题参数值");
//值模板
StringTemplateGroup sg = new StringTemplateGroup("GroupTest");
sg.DefineTemplate("Box", "中华人民共和国,,,,");
StringTemplate hello = new StringTemplate(sg, "调用值模板:$Mys:Box();separator=\"==\"$------s");
hello.SetAttribute("Mys", "中国");
hello.SetAttribute("Mys", "中国");
//循环显示
//StringTemplate hello = new StringTemplate("<table>$Item:{<tr><td>$it$要循环显示的内容</td></tr>}$</table>");
//for (int i = 0; i < 10; i++)
//{
// hello.SetAttribute("Item", i);
//}