Antlr字符串模板中的条件

Antlr字符串模板中的条件,antlr,stringtemplate,Antlr,Stringtemplate,我们使用Antlr StringTemplates来控制实体名称的输出方式 基本的Stringtemplate是 $FirstName$$Initial$$LastName$, $Suffix$,$Degree$ 我想给该模板添加一些智能,以便逗号仅在必要时输出,即第一个逗号仅在有后缀或度时输出,第二个逗号仅在有后缀时输出 我尝试了以下模板字符串位,但它不起作用。我想我误解了 $FirstName$$Initial$$LastName$ 美元后缀$ ,$Degree$ 如果它有助于我们使用此C处

我们使用Antlr StringTemplates来控制实体名称的输出方式

基本的Stringtemplate是

$FirstName$$Initial$$LastName$, $Suffix$,$Degree$

我想给该模板添加一些智能,以便逗号仅在必要时输出,即第一个逗号仅在有后缀或度时输出,第二个逗号仅在有后缀时输出

我尝试了以下模板字符串位,但它不起作用。我想我误解了

$FirstName$$Initial$$LastName$ 美元后缀$ ,$Degree$

如果它有助于我们使用此C处理模板#

StringTemplate StringTemplate=new Antlr.StringTemplate.StringTemplate(template.Data);
foreach(字典中的配对)
{
if(pair.First!=null&&pair.Second!=null)
{
stringtemplate.SetAttribute(pair.First,pair.Second);
}
}
返回stringtemplate.ToString();

使用$FirstName$$Initial$$LastName$$if(Suffix)$,$Suffix$$endif$$if(Degree)$,$Degree$$endif$


N

只需在字符串模板中使用分隔符,如: $FirstName;分隔符=“,”$$初始值;分隔符=“,”$

这可能不是确切的答案,但您可以尝试使用分隔符将第一个名称与首字母分隔开,只有当您有第二个值时,才会插入逗号。假设你迭代一组名字和首字母,那么只有当你有首字母时逗号才会出现

StringTemplate stringtemplate = new Antlr.StringTemplate.StringTemplate(template.Data);

foreach (Pair<string, string> pair in dictionary)
{
    if (pair.First != null && pair.Second != null)
    {
        stringtemplate.SetAttribute(pair.First, pair.Second);
    }
}

return stringtemplate.ToString();