Stringtemplate 如何防止额外的分离器?
给定下面的代码st4c#code,如何防止尾部分隔符(',')出现在输出中?如果在输出第一项后没有要跳过的项(例如,如果列表中的第三项不存在),则不会显示尾随分隔符。因此,问题显然与跳过项目有关,但跳过第一个项目没有问题(例如,在输出第二个项目之前没有前导分隔符) 2是偶数Stringtemplate 如何防止额外的分离器?,stringtemplate,stringtemplate-4,Stringtemplate,Stringtemplate 4,给定下面的代码st4c#code,如何防止尾部分隔符(',')出现在输出中?如果在输出第一项后没有要跳过的项(例如,如果列表中的第三项不存在),则不会显示尾随分隔符。因此,问题显然与跳过项目有关,但跳过第一个项目没有问题(例如,在输出第二个项目之前没有前导分隔符) 2是偶数 static void Main(字符串[]args) { 列表项=新列表(){new Item(“1”,false),new Item(“2”,true),new Item(“3”,false)}; 字符串模板组= @"
static void Main(字符串[]args)
{
列表项=新列表(){new Item(“1”,false),new Item(“2”,true),new Item(“3”,false)};
字符串模板组=
@"
偶数参数(参数)::=
>
";
TemplateGroup group=新的TemplateGroupString(string\u template\u group);
模板偶数参数=group.GetInstanceOf(“偶数参数”);
偶数参数添加(“参数”,项目);
Console.WriteLine(偶参数Render());
}//末端总管
}//结束类程序
类项目
{
公共字符串值{get;set;}
公共布尔是偶数{get;set;}
公共项目(字符串V,布尔值E)
{
值=V;
is_偶数=E;
}
}//结束类项
将分隔符更改为“sep”(根据@Har的请求)将提供预期的输出:
晚上2点
如果您将分隔符更改为其他内容,例如separator=“sep”?@Har它输出“2是evensep”,您会得到什么。它似乎是在文本输出后立即输出分隔符,而不是等待知道是否会有更多的项目输出。请注意,它没有写入“sep2 is evensep”,因此它知道不要为列表开头跳过的项目输出分隔符,但一旦输出项目,它将为列表中剩余的每个项目输出分隔符,即使该项目没有输出。请修理!
static void Main (string [] args)
{
List <Item> items = new List <Item> () { new Item ("1", false), new Item ("2", true), new Item ("3",false)};
string string_template_group =
@"
even_params (parameters) ::=
<<
<parameters:{p|<if (p.is_even)><p.value> is even<endif>}; separator = "", "">
>>
";
TemplateGroup group = new TemplateGroupString (string_template_group);
Template even_params = group.GetInstanceOf ("even_params");
even_params.Add ("parameters", items);
Console.WriteLine (even_params.Render ());
} // End Main
} // End class Program
class Item
{
public string value { get; set; }
public bool is_even { get; set; }
public Item (string V, bool E)
{
value = V;
is_even = E;
}
} // End class Item