文章分类

站点统计

  • 分类总数: 13 个
  • 文章总数: 145 篇
  • 评论总数: 35 条
  • 附件总数: 59 个
  • 建站日期: 2008-08-18
  • 访问总数: 388498 人次
  • RSS订阅: 文章|评论

StringTemplate语法(1)

Admin 于 2008-09-11 12:50:20 发表StringTemplate

订阅: http://www.kaiyuan8.org/Feed/Article_28.aspx
引用: 点这里获取地址 (UTF-8)
阿拉伯数字转换成中文大写金额(包括小数)(C#)[2] < StringTemplate语法(1) > Db4o性能优化1

StringTemplate是一个模板引擎,Java、C#(.Net)、Python运行环境下都有相应的版本。网站: http://www.stringtemplate.org/。

模板语法:
   1. 关键字:以$xxxx$来进行分割,并且区分大小写。
   2. 属性引用:

         1. 名称属性:在模板中,这是最常用的一个属性,用于显示文字。如:$email$经过模板引擎解析后将替换为变量email的值。同一个属性可以有多个值,多个值的语法如下:$value;null="xxx",separator=", "$ 定义value属性,当value为null则显示xxx,如果有多个属性值则以“,”号进行分隔(其中null和separator分别定义属性为空时的默认值和分隔符)。

         2. 字段引用:
            如果一个属性名称是对象或集合.可以用 属性名称.字段名 访问字段值
            例如:
            你的姓名: $人.姓名$
            你的邮件:$人.邮件$

            使用语法: $对象名.字段名$
            在C#可以直接将一个对象设置到一个属性名称中.
            如:
            User us = new User();
            us.Name = "xxsssx";
            us.Value ="80";

            StringTemplate st = new StringTemplate("$User.Name$,$User.Value{Article.Content}quot;);
            st.SetAttribute("User", us);

            Console.WriteLine(st.ToString());
            对于键/值对象,也同样使用上面方式进行访问如:
            StringTemplate a = new StringTemplate("$user.name$, $user.phone{Article.Content}quot;);
            Hashtable user = new Hashtable();
            user.Add("name", "Terence");
            user.Add("phone", "none-of-your-business");
            a.SetAttribute("user", user);
            string results = a.ToString();

         3. 自定义属性字段名:

            格式: $属性名:{it.字段名}$
            例如:
            StringTemplate st = new StringTemplate("$abcdef:{第一个: $it.ddddd$ 第二个:$it.ddddd{Article.Content}#125;{Article.Content}quot;);
            st.SetAttribute("abcdef.{ddddd,ddddd}","中国人", "我不来了");
            Console.WriteLine(st.ToString());

            如果字段名是保留字,可以使用$对象名.("保留字")$
            一次显示多个属性
            $[属性名,属性名]$

   3. 模板引用:
      必需把模板加入同一个模板组,才能相互之间调用模板.
      通过$模板名()$来调用模板
      模板传参数
      $模板名(参数名=参数值,参数名=参数值)$
      例如:
      StringTemplateGroup Group = new StringTemplateGroup("Temp");
      Group.DefineTemplate("link", "$title{Article.Content}quot;);
      StringTemplate st = new StringTemplate(Group, "调用link模板,显示链接 $link(url=\"/faq/view?ID=\"+faqid, title=faqtitle)$ ,真的啊!");
      st.SetAttribute("faqid", 1);
      st.SetAttribute("title","中华人民共和国");
      Console.WriteLine(st.ToString());

   4. 循环显示使用:

      User us = new User();
      us.Name = "哈哈";
      us.Value = "99";
      List uss = new List();
      uss.Add(us);
      uss.Add(us);
      uss.Add(us);
      uss.Add(us);
      StringTemplate st = new StringTemplate("$User:{$it.Name$it.Value{Article.Content}#125;$
      ");
      st.SetAttribute("User", uss);
      Console.WriteLine(st.ToString());

   5. 通过模板交替显示:

      StringTemplateGroup group = new StringTemplateGroup("Test");
      group.DefineTemplate("TrRed", "$it.name$it.value$\n");
      group.DefineTemplate("TrWither", "$it.name$it.value$\n");

      StringTemplate st = new StringTemplate(group, "$User:TrRed(),TrWither()$
      ");
      User us = new User();
      us.Name = "哈哈哈";
      us.Value = "999";
      List uss = new List();
      uss.Add(us);
      uss.Add(us);
      uss.Add(us);
      st.SetAttribute("User", uss);
      Console.WriteLine(st.ToString());

被阅1204次, 2投一票StringTemplate

terry

2009-02-19 16:45:54
感谢您的资料。qq,1542718 正打算学习这个,希望有机会交流。
  • 看完了要说点啥么?
  • 昵称 (不填说不了话)
  • 信箱地址 (不会被公开,但是不填也说不了话)
  • 网址 (这个不填也成)
Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 开源吧!. All rights reserved.

粤ICP备07500939号