# 文本插值 ## 概述 插值是指用**变量的内容**替换文本中的**{变量名}**。插值的结果是一段新的**文本**。 当参数输入框的内容以“**$$**”开始时(在输入框的最前面,不是每一行的前面,也不是每个变量的前面),对后面的内容进行插值处理(同时去掉开头的$$)。
![image.png](https://cdn.nlark.com/yuque/0/2023/png/272392/1680244299915-aedbbe32-967c-46fe-b15e-c4f2cfe71f40.png#averageHue=%23fcfbfa&clientId=u2c414368-aecb-4&from=paste&height=163&id=u147b9887&name=image.png&originHeight=244&originWidth=1117&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=44127&status=done&style=none&taskId=u8f3aafaa-a5d4-435d-8c80-ce4118bd88c&title=&width=744.6666666666666) ### 示例 假如变量{Text}的值为“Quicker”,那么下面的内容 - 在插值中使用一般变量(文本、数字、日期) **$$你好,{Text}!**
在插值后变为:
**你好,Quicker!** - 在插值中使用词典变量 **方法1:$${词典变量["key1"]}**
**方法2:$${词典变量.key1}** - 在插值中使用列表 **方法1:$${列表变量[0]}**
**方法2:$${列表变量.0}** 插值后得到的文本可能会做进一步处理才会得到最终的结果,具体的处理过程可以参考“[参数传递](https://getquicker.net/kc/help/doc/parameters)”章节。 “列表”类型的变量,可以用 **{变量名.序号} **的方式插入列表某个元素的值。序号以0开始。需要注意中间不能用额外的空白。
“词典”类型的变量,可以用 **{变量名.键}** 的方式插入某个键的对应值。需要注意中间不能用额外的空白。
剪贴板文本,可以使用 **{[cliptext]}** 的方式插入。 【注意事项】 - {} 中的内容前后不能有多余的空格。比如这些都不会被插值处理:{ xxx} {xxx } { xxx }。 - {} 中不能包含“{”或“}”字符。 - 变量名必须紧跟{开始。变量名后面可以为"}"、“.”或“[”,否则会造成在更改变量名时无法找到。每个{}内只能使用一个变量。 - 如果希望输出`$$`开始的纯文本内容而不是进行插值处理,可以改用表达式进行文本拼接,例如`$="$$" + {name} + "你好!"` 请参考[此贴](https://getquicker.net/QA/Question/10264)。 ### 变量表达式 【以下需1.9.5+版本支持】
有时候需要在输出时对变量内容做简单处理(如进行URL编码),可以通过以下方式进行:
以下红色部分为判断依据。 - {变量**.**方法(**)**} 例如: ``` {文本变量.UrlEncode()} 可调用的方法以变量所对应的c#类型为准。文本类型另外支持UrlEncode()和UrlDecode()方法。 ``` - {变量**[**列表序号或词典Key].....} 例如: ```csharp {列表变量[0]} {列表变量[0].ToUpper().UrlEncode()} {词典变量["key1"]} {词典变量["key1"].ToString().ToUpper().UrlEncode()} ``` - {表达式**=**} 会对表达式进行计算。(请不要在中间使用变量,否则在更改变量名的时候无法找到) 例如: ```csharp {3+3=} 输出“6” {DateTime.Now.ToString("yyyy-MM-dd")=} ``` 示例动作:[https://getquicker.net/sharedaction?code=aa38d2b9-f95b-4a91-d713-08d827485760](https://getquicker.net/sharedaction?code=aa38d2b9-f95b-4a91-d713-08d827485760) ## 插值嵌套 _自1.4.22版本之后开始支持。_
如果插值后得到的结果文本以“$$”或“$=”开始,则会对结果再次进行1次插值或表达式计算。得到的结果如下: - 以“**$$$$**”开始:插值后对得到的内容再次插值。 - 以“**$$$=**”开始:插值后对得到的内容进行[表达式计算](https://www.yuque.com/quicker/help/expression)。 - 不支持先表达式后插值($="$${变量}")! ## 组合成文本 请参考“[组合成文本](https://www.yuque.com/quicker/help/formatstring)”模块说明。