我对如何描述这一点感到很茫然,所以我将从一个类似于我正在使用的JSON的简单示例开始:
"user_interface": {
username: "Hello, %USER.username%",
create_date: "Your account was created on %USER.create_date%",
favorite_color: "Your favorite color is: %USER.fav_color%"
}
username
create_date
和favorite_color
字段中的“特殊标识符”以%
字符开头和结尾,并且应该替换为正确的信息那个特定的用户。 favorite_color
字段的示例如下:
Your favorite color is: Orange
这些标识符是否有合适的术语?在重新发明轮子之前,我正在尝试搜索谷歌搜索最佳实践或库,但是我能想到的一切都会导致误报的大海。
答案 0 :(得分:1)
关于%special identifier%
主题的一些想法。让我们看看一小部分示例,它们实现了几乎相似的字符串替换。
<强> WSH Shell ExpandEnvironmentStrings Method 强>
返回环境变量的扩展值。
WSH .vbs代码段
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("WinDir is %WinDir%")
' WinDir is C:\Windows
<强> .NET Composite Formatting 强>
.NET Framework复合格式化功能将对象列表和复合格式字符串作为输入。复合格式字符串由与索引占位符混合的固定文本组成,称为格式项,对应于列表中的对象。格式化操作产生一个结果字符串,该字符串由原始固定文本与列表中对象的字符串表示混合而成。
VB.Net代码段
Console.WriteLine(String.Format("Prime numbers less than 10: {0}, {1}, {2}, {3}, {4}", 1, 2, 3, 5, 7 ))
' Prime numbers less than 10: 1, 2, 3, 5, 7
<强> JavaScript replace Method (with RegEx application) 强>
... 匹配变量可用于文本替换,其中替换字符串必须动态确定... $ n ...第n个捕获的子匹配...
也称为Format Flags,Substitution,Backreference和Format specifiers
JavaScript代码段
console.log("Hello, World!".replace(/(\w+)\W+(\w+)/g, "$1, dear $2"))
// Hello, dear World!
<强> Python Format strings 强>
格式字符串包含由大括号{}括起的“替换字段”。大括号中未包含的任何内容都被视为文字文本,不会被原样复制到输出...
Python代码段
print "The sum of 1 + 2 is {0}".format(1+2)
# The sum of 1 + 2 is 3
<强> Ruby String Interpolation 强>
双引号字符串允许使用#{...} ...
插值其他值
Ruby代码段
res = 3
puts "The sum of 1 + 2 is #{res}"
# The sum of 1 + 2 is 3
<强> TestComplete Custom String Generator 强>
...将用于生成值的宏,文本,格式说明符和正则表达式的字符串。此参数的默认值为%INT(1,2147483647,1)%NAME(ANY,FULL)位于%CITY中。 ...此外,您可以使用特殊的格式说明符格式化生成的值。例如,您可以使用以下宏来生成具有指定最小长度(3个字符)的整数值序列 - %0.3d%INT(1,100,3)。
<强> Angular Expression 强>
Angular表达式是类似JavaScript的代码段,主要放在插值绑定中,例如{{textBinding}} ...
<强> Django Templates 强>
变量被{{和}}包围,如下所示:
My first name is {{ first_name }}. My last name is {{ last_name }}.
具有{&#39; first_name&#39;:& #39; John&#39;,&#39; last_name&#39;:&#39; Doe&#39;},此模板呈现为:
My first name is John. My last name is Doe.
<强> Node.js v4 Template strings 强>
...模板字符串可以包含占位符。这些由美元符号和花括号($ {expression})表示。占位符中的表达式和它们之间的文本被传递给函数...
JavaScript代码段
var res = 3;
console.log(`The sum of 1 + 2 is ${res}`);
// The sum of 1 + 2 is 3
<强> C/C++ Macros 强>
预处理在所有不是预处理程序指令的行中展开宏 ... 替换源代码。
C ++代码段
std::cout << __DATE__;
// Jan 8 2016
<强> AutoIt Macros 强>
AutoIt有许多宏,它们是AutoIt使用的特殊只读变量。宏以@字符开头...... 替换源代码。
AutoIt代码段
MsgBox(0, "", "CPU Architecture is " & @CPUArch)
; CPU Architecture is X64
<强> SharePoint solution Replaceable Parameters 强>
可以在项目文件中使用可替换参数或令牌,以便为在设计时未知实际值的SharePoint解决方案项提供值。它们在功能上类似于标准的Visual Studio模板标记...标记以美元符号($)字符开头和结尾。在项目部署时将项目打包到SharePoint解决方案包(.wsp)文件中时,所使用的任何令牌都将替换为实际值。例如,令牌$ SharePoint.Package.Name $可能会解析为字符串&#34;测试SharePoint包。&#34;
<强> Apache Ant Replace Task 强>
替换是一个基于目录的任务,用于将给定字符串的出现替换为所选文件中的另一个字符串... 令牌 ... 令牌必须替换...
所以,基于功能上下文,我会称之为 %token%
(这种strings with an identified "meaning"的味道。)