【问题标题】:Conditionals in Antlr String TemplatesAntlr 字符串模板中的条件
【发布时间】:2009-10-09 16:55:23
【问题描述】:

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

基本的字符串模板是

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

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

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

$FirstName$ $Initial$ $LastName$ ,, $Suffix$ , $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();

【问题讨论】:

    标签: antlr stringtemplate


    【解决方案1】:

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

    没有

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-19
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        相关资源
        最近更新 更多