【问题标题】:Term for a "Special Identifier" Embedded in String Data嵌入在字符串数据中的“特殊标识符”术语
【发布时间】:2016-01-05 08:34:51
【问题描述】:

我不知道如何描述这一点,所以我将从一个类似于我正在使用的 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%"
}

位于usernamecreate_datefavorite_color 字段中的“特殊标识符”以% 字符开头和结尾,并且应该替换为该特定用户的正确信息。 favorite_color 字段的示例是:

Your favorite color is: Orange

这些标识符有合适的术语吗?在重新发明轮子之前,我试图在解析这些时在谷歌上搜索最佳实践或库,但我能想到的一切都会导致误报。

【问题讨论】:

    标签: json string parsing


    【解决方案1】:

    只是关于%special identifier% 的一些想法。让我们看一小部分示例,它们实现了几乎相似的字符串替换。

    WSH Shell ExpandEnvironmentStrings Method

    返回环境变量的扩展值。

    WSH .vbs 代码 sn-p

    Set WshShell = WScript.CreateObject("WScript.Shell")
    WScript.Echo WshShell.ExpandEnvironmentStrings("WinDir is %WinDir%")
    ' WinDir is C:\Windows
    

    .NET Composite Formatting

    .NET Framework 复合格式功能将对象列表和复合格式字符串作为输入。复合格式字符串由与索引占位符混合的固定文本组成,称为格式项,对应于列表中的对象。格式化操作会产生一个结果字符串,该字符串由原始固定文本与列表中对象的字符串表示混合而成。

    VB.Net代码sn-p

    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 FlagsSubstitutionBackreferenceFormat specifiers
    JavaScript 代码 sn-p

    console.log("Hello, World!".replace(/(\w+)\W+(\w+)/g, "$1, dear $2"))
    // Hello, dear World!
    

    Python Format strings

    格式字符串包含用大括号 {} 括起来的“替换字段”。任何不包含在大括号中的内容都被视为文字文本,它会原封不动地复制到输出中...

    Python代码sn-p

    print "The sum of 1 + 2 is {0}".format(1+2)
    # The sum of 1 + 2 is 3
    

    Ruby String Interpolation

    双引号字符串允许使用#{...} ...

    插值其他值

    Ruby 代码 sn-p

    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 的代码 sn-ps,主要放在插值绑定中,例如 {{ textBinding }}...

    Django Templates

    变量被 {{ 和 }} 包围,如下所示:
    My first name is {{ first_name }}. My last name is {{ last_name }}.
    上下文为 {'first_name': 'John', 'last_name': 'Doe '},这个模板呈现给:
    My first name is John. My last name is Doe.

    Node.js v4 Template strings

    ...模板字符串可以包含占位符。这些由美元符号和花括号 (${expression}) 表示。占位符中的表达式和它们之间的文本被传递给一个函数...

    JavaScript 代码 sn-p

    var res = 3;
    console.log(`The sum of 1 + 2 is ${res}`);
    // The sum of 1 + 2 is 3
    

    C/C++ Macros

    预处理在所有非预处理器指令的行中扩展... 源代码中的替换。

    C++代码sn-p

    std::cout << __DATE__;
    // Jan 8 2016
    

    AutoIt Macros

    AutoIt 有许多 ,它们是 AutoIt 使用的特殊只读变量。宏以 @ 字符开头... 源代码中的替换。

    AutoIt 代码 sn-p

    MsgBox(0, "", "CPU Architecture is " & @CPUArch)
    ; CPU Architecture is X64
    

    SharePoint solution Replaceable Parameters

    可替换参数令牌可在项目文件中使用,为设计时实际值未知的 SharePoint 解决方案项提供值。它们在功能上类似于标准 Visual Studio 模板标记...标记以美元符号 ($) 字符开头和结尾。在部署时将项目打包到 SharePoint 解决方案包 (.wsp) 文件中时,使用的任何标记都将替换为实际值。例如,令牌 $SharePoint.Package.Name$ 可能会解析为字符串“测试 SharePoint 包”。

    Apache Ant Replace Task

    替换是一个基于目录的任务,用于用选定文件中的另一个字符串替换给定字符串的出现... token...必须替换的token ...

    因此,根据功能上下文,我将其称为 %token%(类似strings with an identified "meaning")。

    【讨论】:

    • 这是一个相当广泛的列表。称它为token 可能和其他任何一个都一样好,但考虑到有多少种语言实现了某种形式的这种形式,我仍然很惊讶没有一个被广泛接受的术语(可能有细微的变化)。我会看看其他人是否可以在接受这个答案之前添加输入。
    • @ChristopherSheaf 只需尝试一个简单的搜索,例如在 SO 上,如this,您会发现token 是常用的,通常代表那个特殊标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2018-09-18
    • 2023-03-23
    相关资源
    最近更新 更多