我们正在使用Antlr StringTemplates来控制实体名称的输出方式。
基本的Stringtemplate是
$ FirstName $ $ Initial $ $ LastName $, $ Suffix $,$ Degree $
我想在该模板中添加一些智能,以便只在必要时输出逗号,即第一个逗号仅在有后缀或度时输出,第二个逗号仅在有后缀时输出。
我尝试了以下模板字符串,它不起作用。我想我误解了
$ FirstName $ $ Initial $ $ LastName $ < if(Suffix | Degree)>,< endif>,$ Suffix $ <如果(后缀)GT;,< ENDIF> $ $度
如果它有助于我们使用此C#处理模板
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();
答案 0 :(得分:1)
使用$ FirstName $ $ Initial $ $ LastName $ $ if(Suffix)$,$ Suffix $ $ endif $ $ if(Degree)$,$ Degree $ $ endif $
<磷>氮答案 1 :(得分:1)
只需使用字符串模板中的分隔符,如: $ FirstName; separator =“,”$ $ Initial; separator =“,”$
这可能不是确切的答案,但您可以尝试使用分隔符将First Name与Initial分开,只有在您有第二个值时才会插入逗号。假设您正在迭代一组首字母和首字母,那么只有在您有首字母时才会出现逗号。