过滤器
过滤器允许您修改 Web Clipper 模板中的变量。使用 {{variable|filter}} 语法将过滤器应用于变量。
- 过滤器适用于任何类型的变量,包括
prompt、meta、selector和schema变量。 - 过滤器可以链式使用,例如
{{variable|filter1|filter2}},按照添加的顺序依次应用。
日期处理
转换和修改日期。
date
将日期转换为指定格式,详见参考。
{{date|date:"YYYY-MM-DD"}}将当前日期转换为YYYY-MM-DD格式。- 使用
date:("outputFormat", "inputFormat")指定输入格式,例如 解析并返回12/01/2024。
date_modify
通过添加或减去指定的时间量来修改日期,详见参考。
"2024-12-01"|date_modify:"+1 year"返回"2025-12-01""2024-12-01"|date_modify:"-2 months"返回"2024-10-01"
duration
将 ISO 8601 持续时间字符串或秒数转换为格式化的时间字符串。使用以下标记:HH(补零的小时数)、H(小时数)、mm(补零的分钟数)、m(分钟数)、ss(补零的秒数)、s(秒数)。
"PT1H30M"|duration:"HH:mm:ss"返回"01:30:00"。"3665"|duration:"H:mm:ss"返回"1:01:05"。- 在未设定任何参数的情况下,
duration的显示规则为:超过1小时采用HH:mm:ss格式,不足1小时则使用mm:ss格式。 - 支持
ISO 8601持续时间格式(如PT6702S、PT1H30M)和纯秒数两种输入方式。
文本转换与大小写处理
将文本字符串从一种格式转换为另一种格式。
camel
将文本转换为 驼峰命名格式。
capitalize
将值的首字母转换为大写,其余部分转换为小写,例如:"hELLO wORLD"|capitalize 返回 "Hello world"。
kebab
将文本转换为 短横线命名格式。
lower
将文本转换为 小写。
pascal
将文本转换为 帕斯卡命名格式。
replace
替换指定文本的出现:
- 简单替换:
"hello!"|replace:",":""会移除所有逗号。 - 多重替换:
"hello world"|replace:("e":"a","o":"0")返回结果为"hall0 w0rld"。 - 替换操作按照指定的顺序执行。
- 要移除指定文本,请使用
“”作为替换值。 - 在搜索词中使用特殊字符(如
: | { } ( ) ' ")时,需使用反斜杠进行转义,例如使用\:可搜索字面意义上的冒号。
支持使用 JavaScript 正则表达式语法的正则表达式:
- 将字符串中的所有元音字母替换为星号:
"hello world"|replace:"/[aeiou]/g":"*"→"h*ll* w*rld"。 - 不区分大小写:
"HELLO world"|replace:"/hello/i":"hi" → "hi world"。 - 多个正则表达式:
"hello world"|replace:("/[aeiou]/g":"*","/\s+/":"-")→"h*ll*-w*rld"。 - 可用的标志符:
g(全局匹配)、i(忽略大小写)、m(多行模式)、s(点号通配)、u(unicode模式)、y(粘性匹配)。
safe_name
将文本转换为安全的文件名。
- 默认情况下,
safe_name应用最保守的清理规则。 - 操作系统特定的规则可通过
safe_name:os格式应用,其中os可为windows、mac或linux,以此实现仅针对相应操作系统的规则生效。
snake
将文本转换为 蛇形命名格式。
title
将文本转换为“标题格式”,例如,输入"hello world"|title将返回"Hello World"。
trim
移除字符串两端的空白字符。
" hello world "|trim返回"hello world"
uncamel
将驼峰命名法或帕斯卡命名法转换为以空格分隔的单词,您随后可以使用如 title 或 capitalize 等其他过滤器进行进一步格式化。
"camelCase"|uncamel返回"camel case"。"PascalCase"|uncamel返回"pascal case"。
upper
将值转换为大写,例如 "hello world"|upper 返回 "HELLO WORLD"。
文本格式化处理
blockquote
为输入的每一行添加 Markdown 引用前缀(> )。
callout
创建一个带有可选参数的标注:{{variable|callout:("type", "title", foldState)}}
type是标注框类型,默认为info。title是标注框标题,默认为空。foldState是一个用于设置折叠状态的布尔值(true表示已折叠,false表示未折叠,null表示不可折叠)。
footnote
将数组或对象转换为 Markdown 脚注列表。
- 对于数组:
["first item","second item"]|footnote将返回:[^1]: first item等格式内容。 - 对于对象:
{"First Note": "Content 1", "Second Note": "Content 2"}|footnote将返回:[^first-note]: Content 1等格式内容。
fragment_link
将字符串和数组转换为文本片段链接。链接文本默认为 link。
highlights|fragment_link返回Highlight content [link](text-fragment-url)。highlights|fragment_link:"custom title"返回Highlight content [custom title](text-fragment-url)。
image
将字符串、数组或对象转换为 Markdown 图像语法。
- 对于字符串:
"image.jpg"|image:"alt text"返回。 - 对于数组:
["image1.jpg","image2.jpg"]|image:"alt text"返回一个包含相同替代文本的 Markdown 图片字符串数组。 - 对于对象:
{"image1.jpg": "Alt 1", "image2.jpg": "Alt 2"}|image返回以对象键作为替代文本的 Markdown 图片字符串。
link
将字符串、数组或对象转换为Markdown链接语法(请勿与 wikilink 混淆)。
- 对于字符串:
"url"|link:"author"返回[author](url)。 - 对于数组:
["url1","url2"]|link:"author"返回一个包含相同文本的 Markdown 链接数组。 - 对于对象:
{"url1": "Author 1", "url2": "Author 2"}|link返回与对象键匹配的文本的 Markdown 链接。
list
将数组转换为 Markdown 列表。
list转换为项目符号列表。list:task转换为任务列表。list:numbered转换为编号列表。list:numbered-task转换为带编号的任务清单。
table
将数组或对象数组转换为 Markdown 表格:
- 对于对象数组,它使用对象键作为表头。
- 对于数组的数组,它会创建一个表格,每个嵌套数组作为一行。
- 对于简单数组,它会创建一个以
值为表头的单列表格。 - 可通过以下方式指定自定义列标题:
table:("Column 1", "Column 2", "Column 3")。当配合简单数组使用时,该功能会根据指定的列数自动将数据拆分为多行。
wikilink
将字符串、数组或对象转换为 Obsidian wikilink 语法。
- 对于字符串:
"page"|wikilink返回[[page]]。 - 对于带有别名的字符串:
"page"|wikilink:"alias"返回[[page|alias]]。 - 对于数组:
["page1","page2"]|wikilink返回不带别名的维基链接数组。 - 对于带有别名的数组:
["page1","page2"]|wikilink:"alias"返回所有链接使用相同别名的维基链接数组。 - 对于对象:
{"page1": "alias1", "page2": "alias2"}|wikilink返回以页面名称为键、别名为值的维基链接。
数字处理
calc
对数字执行基本算术运算。
- 支持的运算符包括:
+、-、*、/,以及用于幂运算的**(或^)。 - 示例:
5|calc:"+10"返回15。 - 示例:
2|calc:"**3"返回8(2 的立方)。 - 如果输入不是数字,则返回原始字符串。
length
返回字符串长度、数组长度或对象中的键的数量。
- 对于字符串:
"hello"|length返回其长度5。 - 对于数组:
["a","b","c"]|length返回其长度3。 - 对于对象:
{"a":1,"b":2}|length返回2。
round
将数字四舍五入到最接近的整数或指定的小数位数。
- 无参数时:
3.7|round返回4。 - 指定小数位数:
3.14159|round:2返回3.14。
HTML 处理
处理 HTML 内容并将其转换为 Markdown 格式。请注意,您的输入变量必须包含 HTML 内容,例如使用 {{fullHtml}}、{{contentHtml}} 或 {{selectorHtml:}} 变量。
markdown
将字符串转换为 Obsidian 风格 Markdown 格式的字符串。
- 在与返回 HTML 的变量(如
{{contentHtml}}、{{fullHtml}})以及选择器变量(如{{selectorHtml:cssSelector}})结合使用时尤为实用。
remove_attr
仅从标签中移除指定的 HTML 属性。
- 示例:
"<div class="test" id="example">Content</div>"|remove_attr:"class"返回<div id="example">Content</div>。 - 多个属性:
{{fullHtml|remove_attr:("class,style,id")}}
remove_html
从字符串中移除指定的 HTML 元素及其内容。
- 支持标签名、类或ID,例如
{{fullHtml|remove_html:("img,.class-name,#element-id")}} - 若仅需移除HTML标签或属性而保留内容,可使用
strip_tags或strip_attr过滤器。
remove_tags
仅移除指定的 HTML 标签。保留标签内的内容。
- 示例:
"<p>Hello <b>world</b>!</p>"|remove_tags:"b"返回"<p>Hello world!</p>"。 - 多个标签:
{{fullHtml|remove_tags:("a,em,strong")}}
replace_tags
替换 HTML 标签,保留标签的内容和属性。
{{fullHtml|replace_tags:"strong":"h2"}}将所有<strong>标签替换为<h2>
strip_attr
移除字符串中的所有 HTML 属性。
- 使用
strip_attr:("class, id")可保留特定属性 - 示例:
"<div class="test" id="example">Content</div>"|strip_attr:("class")返回<div id="example">Content</div>。
strip_md
移除所有 Markdown 格式并返回纯文本字符串,例如将 **text** 转换为 text。
- 将格式化的文本转换为无格式的纯文本,包括粗体、斜体、高亮、标题、代码、引用块、表格、任务列表和维基链接。
- 完全移除表格、脚注、图像和HTML元素。
strip_tags
从字符串中移除所有 HTML 标签。标签内的内容将被保留。
- 使用
strip_tags:("p,strong,em")来保留特定标签。 - 示例:
"<p>Hello <b>world</b>!</p>"|strip_tags:("b")返回Hello <b>world</b>!。
数组和对象处理
处理数组和对象类型。
first
返回数组的第一个元素作为字符串。
["a","b","c"]|first返回"a"。- 如果输入不是数组,则原样返回输入。
join
将数组元素组合成一个字符串。
["a","b","c"]|join返回"a,b,c"。- 可以指定自定义分隔符:
["a","b","c"]|join:" "返回"a b c"。使用join:"\n"以换行符分隔元素。 - 在
split或slice之后使用可能很有用:"a,b,c,d"|split:","|slice:1,3|join:" "返回"b c"。
last
返回数组的最后一个元素作为字符串。
["a","b","c"]|last返回"c"- 如果输入不是数组,则返回未更改的输入。
map
对数组中的每个元素应用转换,语法为 map:item => item.property 或 map:item => item.nested.property 用于嵌套属性。
[{gem: "obsidian", color: "black"}, {gem: "amethyst", color: "purple"}]|map:item => item.gem返回["obsidian", "amethyst"]- 对象字面量和复杂表达式需使用括号:
map:item => ({key: value}),例如:[{gem: "obsidian", color: "black"}, {gem: "amethyst", color: "purple"}]|map:item => ({name: item.gem, color: item.color})返回[{name: "obsidian", color: "black"}, {name: "amethyst", color: "purple"}]。
字符串字面量受到支持,并会自动包装在一个具有 str 属性的对象中。该属性用于存储字符串字面量转换的结果,例如 ["rock", "pop"]|map:item => "genres/${item}",返回 [{str: "genres/rock"}, {str: "genres/pop"}]。
map 与 template 过滤器结合使用,例如 map:item => ({name: ${item.gem}, color: item.color})|template:"- ${name} is ${color}\n" 。
merge
向数组中添加新值。
- 对于数组:
["a","b"]|merge:("c","d")返回["a","b","c","d"]。 - 单个值:
["a","b"]|merge:"c"返回["a","b","c"]。 - 如果输入不是数组,则创建一个新数组:
"a"|merge:("b","c")返回["a","b","c"]。 - 值可以加引号:
["a"]|merge:('b,"c,d",e')返回["a","b","c,d","e"]。
nth
使用 CSS 样式 nth-child 语法和分组模式保留数组中的第 n 项。所有位置均基于1开始计数(首项位置为1)。
array|nth:3仅保留第3个元素。array|nth:3n保留每第3个元素(第3、6、9项等)。array|nth:n+3保留第3个及之后所有元素。
适用于重复结构的分组模式语法:
array|nth:1,2,3:5保留每组5个项目中的第1、2、3个位置。例如:[1,2,3,4,5,6,7,8,9,10]|nth:1,2,3:5返回[1,2,3,6,7,8]。
object
操作对象数据:
object:array将对象转换为键值对数组。object:keys返回一个包含对象所有键的数组。object:values返回一个包含对象所有值的数组。- 示例:
{"a":1,"b":2}|object:array返回[["a",1],["b",2]]
slice
提取字符串或数组的一部分。
- 对于字符串:
"hello"|slice:1,4返回"ell"。 - 对于数组:
["a","b","c","d"]|slice:1,3返回["b","c"]。 - 如果只提供一个参数,则从该索引开始切片至末尾:
"hello"|slice:2返回"llo"。 - 负索引从末尾开始计数:
"hello"|slice:-3返回"llo"。 - 第二个参数是排他性的:
"hello"|slice:1,4包含索引为1、2和3的字符。 - 使用负的第二个参数会从末尾排除元素:
"hello"|slice:0,-2返回"hel"。
split
将字符串分割成子字符串数组。
"a,b,c"|split:","返回["a","b","c"]。"hello world"|split:" "返回["hello","world"]。- 如果未提供分隔符,则按每个字符进行分割:
"hello"|split返回["h","e","l","l","o"]。 - 正则表达式可用作分隔符:
"a1b2c3"|split:[0-9]返回["a","b","c"]。
template
使用 object|template:"Template with ${variable}" 语法将模板字符串应用于对象或对象数组。
- 访问嵌套属性:
{"gem":{"name":"Obsidian"}}|template:"${gem.name}"返回"Obsidian"。 - 对于对象:
{"gem":"obsidian","hardness":5}|template:"${gem} has a hardness of ${hardness}"返回"obsidian has a hardness of 5"。 - 对于数组:
[{"gem":"obsidian","hardness":5},{"gem":"amethyst","hardness":7}]|template:"- ${gem} has a hardness of ${hardness}\n"返回一个格式化列表。
通过访问 str 属性来处理字符串字面量 map:
- 示例:
["rock", "pop"]|map:item => "genres/${item}"|template:"${str}"返回"genres/rock\ngenres/pop"。 - 在将
template应用于通过字符串字面量map创建的映射对象时,系统会自动使用str属性。
unique
从数组和对象中移除重复值。
- 对于基本类型数组:
[1,2,2,3,3]|unique返回[1,2,3]。 - 对于对象数组:
[{"a":1},{"b":2},{"a":1}]|unique返回[{"a":1},{"b":2}]。 - 对于对象,它会移除具有重复值的属性,保留最后一次出现的键。
- 对于字符串,它返回未更改的输入。