Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stringtemplate 如何防止额外的分离器?_Stringtemplate_Stringtemplate 4 - Fatal编程技术网

Stringtemplate 如何防止额外的分离器?

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)}; 字符串模板组= @"

给定下面的代码st4c#code,如何防止尾部分隔符(',')出现在输出中?如果在输出第一项后没有要跳过的项(例如,如果列表中的第三项不存在),则不会显示尾随分隔符。因此,问题显然与跳过项目有关,但跳过第一个项目没有问题(例如,在输出第二个项目之前没有前导分隔符)

2是偶数

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