1

Antlr StringTemplates を使用して、エンティティの名前の出力方法を制御します。

基本的な文字列テンプレートは

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

そのテンプレートにいくつかのスマートを追加して、必要な場合にのみコンマが出力されるようにします。つまり、最初のコンマはサフィックスまたは学位がある場合にのみ出力され、2 番目のコンマはサフィックスがある場合にのみ出力されます。

次のテンプレート文字列ビットを試してみましたが、うまくいきません。誤解していると思います

$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)$、$ Supplement $ $ endif $ $ if(Degree)$、$ Degree $ $endif$を使用します

N

于 2009-10-09T17:24:48.587 に答える
1

次のような文字列テンプレートで区切り記号を使用するだけです: $FirstName;separator=","$ $Initial;separator=","$

これは正確な答えではないかもしれませんが、セパレーターを使用してファーストネームとイニシャルを区切ることができます.2番目の値がある場合にのみカンマが挿入されます. たとえば、名前とイニシャルのセットを繰り返し処理している場合、イニシャルがある場合にのみコンマが来るとします。

于 2011-01-04T20:51:24.027 に答える