StringTemplate.Net 学习笔记(5):条件声明

ST的条件声明只有一个if语句,假如attribute为bool值,则直接计算,否则它通过判断attribute是否有值来计算。

接下来看几个例子:

例1,计算bool值:

	StringTemplate st = new StringTemplate(@"
		$if(c)$
		  条件成立
		$else$
		  条件不成立
		$endif$");
	st.SetAttribute("c", false);
	Console.WriteLine(st.ToString());
	输出:条件不成立

例2,计算bool值:

	StringTemplate st = new StringTemplate(@"
		$if(c)$
		  条件成立
		$else$
		  条件不成立
		$endif$");
	st.SetAttribute("c", true);
	Console.WriteLine(st.ToString());
	输出:条件成立

例3,判断是否有值:

	StringTemplate st = new StringTemplate(@"
		$if(c)$
		  条件成立
		$else$
		  条件不成立
		$endif$");
	Console.WriteLine(st.ToString());
	输出:条件不成立

例4,判断是否有值:

	StringTemplate st = new StringTemplate(@"
		$if(c)$
		  条件成立
		$else$
		  条件不成立
		$endif$");
	st.SetAttribute("c", "test");
	Console.WriteLine(st.ToString());
	输出:条件成立

例5,多个分支:

	StringTemplate st = new StringTemplate(@"
		$if(a)$
		  条件a成立
		$elseif(b)$
		  条件b成立
		$elseif(c)$
		  条件c成立
		$else$
		  条件都不成立
		$endif$");
	st.SetAttribute("c", "00");
	Console.WriteLine(st.ToString());
	输出:条件c成立

例6,多个分支设置了多个条件情况下,按照它们出现的顺序来确定条件是否成立:

	StringTemplate st = new StringTemplate(@"
		$if(a)$
		  条件a成立
		$elseif(b)$
		  条件b成立
		$elseif(c)$
		  条件c成立
		$else$
		  条件都不成立
		$endif$");
	st.SetAttribute("c", true);
	st.SetAttribute("b", true);
	Console.WriteLine(st.ToString());
	输出:条件b成立

例7,对attribute取反,这是ST唯一支持的运算符:

	StringTemplate st = new StringTemplate(@"
		$if(!c)$
		  条件成立
		$else$
		  条件不成立
		$endif$");
	st.SetAttribute("c", true);
	Console.WriteLine(st.ToString());
	输出:条件不成立

例8,嵌套的if语句:

	StringTemplate st = new StringTemplate(@"
		$if(a)$
		  条件a成立
		  $if(b)$
		  	条件b成立
		  $else$
		  	条件b不成立
		  $endif$
		$else$
		  条件不成立
		$endif$");
	st.SetAttribute("a", true);
	Console.WriteLine(st.ToString());
	输出:条件a成立 条件b不成立

支持的条件语法确实是太少了。

本文地址:http://www.cnblogs.com/lwme/archive/2010/04/30/1725329.html

参考:http://www.antlr.org/wiki/display/ST/Expressions#Expressions-Attributeoperators

原文地址:https://www.cnblogs.com/lwme/p/1725329.html