1

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

基本的字符串模板是

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

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

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

$FirstName$ $Initial$ $LastName$ <if(Suffix|Degree)>,<endif>, $Suffix$ <if(Suffix)>,<endif> $Degree$

如果它有助于我们使用这个 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();
4

2 回答 2

1

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

ñ

于 2009-10-09T17:24:48.587 回答
1

只需在字符串模板中使用分隔符,例如:$FirstName;separator=","$ $Initial;separator=","$

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

于 2011-01-04T20:51:24.027 回答