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