如何在 Enterprise Architect 代码生成模板中转义引号
How to escape quotation marks in Enterprise Architect Code Generation Template
我想对枚举值做进一步的描述。因此,如果要提供描述,我将自定义 Tagged Value 添加到名为 Description 的枚举属性中。目标是在代码生成期间向标记的 枚举属性 添加自定义 C# 属性,但前提是存在这样的 标记值 。因此,我需要编辑 属性声明 的代码生成模板。目前它可以使用:
$hasDescription = %attTag:"Description" ? "true" : "false"%
%if $hasDescription == "true"%
[Description(%qt%%attTag:"Description"%%qt%)]
%endIf%
这给了我想要的输出。但是如果值中有引号,它会破坏输出代码文件。它不会编译。因此,我需要 replace/escape Tagged Value 的值字段中的所有引号。我尝试了以下(各种组合):
%REPLACE(attTag:"Description", "\"", "\\"")%
%REPLACE(attTag:"Description", """", "\""")%
%REPLACE(attTag:"Description", "%qt%", "%sl%%qt%")%
%REPLACE(attTag:"Description", %qt%, %sl%%qt%)%
注: %qt%
用于插入"
,%sl%
用于插入\
(reference)
None 其中有效。要么将字符串原样插入到生成的代码文件中,要么 Tagged Value.
值中的引号没有任何变化
那么有没有办法转义这些字符,以便能够在代码模板中的字符串中替换它们?
使用 Enterprise Architect 13.5.1351
第一个问题是在 SE Software Engineering
我查看了提供的其他模板,经过一番折腾后终于找到了解决方案。宏将一些引号中的文本或变量作为参数。由于直接在 REPLACE
宏中使用转义序列不起作用,我尝试预先将它们分配给变量:
$qt = %qt%
$escape = %sl% + %qt%
$description = %REPLACE(attTag:"Description", $qt, $escape)%
就是这样。终于工作了。在第二行的 %sl%
和 %qt%
之间添加 +
很重要,即使 documentation on Code Template Syntax > Literal Text 另有说明。 $escape = %sl%%qt%
不起作用,因为它只产生 \
而没有 "
.
变量 $description
不是必需的,但为了便于阅读而添加。
我想对枚举值做进一步的描述。因此,如果要提供描述,我将自定义 Tagged Value 添加到名为 Description 的枚举属性中。目标是在代码生成期间向标记的 枚举属性 添加自定义 C# 属性,但前提是存在这样的 标记值 。因此,我需要编辑 属性声明 的代码生成模板。目前它可以使用:
$hasDescription = %attTag:"Description" ? "true" : "false"%
%if $hasDescription == "true"%
[Description(%qt%%attTag:"Description"%%qt%)]
%endIf%
这给了我想要的输出。但是如果值中有引号,它会破坏输出代码文件。它不会编译。因此,我需要 replace/escape Tagged Value 的值字段中的所有引号。我尝试了以下(各种组合):
%REPLACE(attTag:"Description", "\"", "\\"")%
%REPLACE(attTag:"Description", """", "\""")%
%REPLACE(attTag:"Description", "%qt%", "%sl%%qt%")%
%REPLACE(attTag:"Description", %qt%, %sl%%qt%)%
注: %qt%
用于插入"
,%sl%
用于插入\
(reference)
None 其中有效。要么将字符串原样插入到生成的代码文件中,要么 Tagged Value.
值中的引号没有任何变化那么有没有办法转义这些字符,以便能够在代码模板中的字符串中替换它们?
使用 Enterprise Architect 13.5.1351
第一个问题是在 SE Software Engineering
我查看了提供的其他模板,经过一番折腾后终于找到了解决方案。宏将一些引号中的文本或变量作为参数。由于直接在 REPLACE
宏中使用转义序列不起作用,我尝试预先将它们分配给变量:
$qt = %qt%
$escape = %sl% + %qt%
$description = %REPLACE(attTag:"Description", $qt, $escape)%
就是这样。终于工作了。在第二行的 %sl%
和 %qt%
之间添加 +
很重要,即使 documentation on Code Template Syntax > Literal Text 另有说明。 $escape = %sl%%qt%
不起作用,因为它只产生 \
而没有 "
.
变量 $description
不是必需的,但为了便于阅读而添加。