如果你看到本条消息,说明本页面并未加载该全局导航的JS代码,该导航功能将无法使用,请刷新页面重试。

近期兑换码:2024RHODESISLAND。前往兑换(官服&B服均可):官网登录


Cover-title-bg-icon.png


首页

Operator-title-bg-icon.png


干员

Event-title-bg-icon.png


活动

Operation-title-bg-icon.png


作战

Guide-title-bg-icon.png


攻略

全站通知:

帮助:解析函数

来自明日方舟WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
本页面仅记录在本站可能较为常用的解析函数
若您想了解本站所有可用解析函数,推荐前往页面及其他wiki站点查看。

基本格式及通用注意事项

解析函数的格式如下:

{{#函数名: 参数1 | 参数2 | ... | 参数n }}

在页面中写上如此一般的代码后,后台解析页面就会呼叫解析函数“函数名”,并传入相应的参数。如果输入的参数内同样的含有函数(或模板等需要展开运算的代码),解析器将会先运算和展开参数里的代码。这种先后次序与数学公式中的括号是同等效果,由内至外逐一展开运算。

解析函数存在几个重要特性:

  • 解析函数的第一个参数(即格式中的“参数1”,后均使用“参数1”说法)必定会自动被展开,即使使用了前述的方法,最多也只能防止参数2及以后的参数被展开。另外在参数1的内容中使用<nowiki></nowiki>通常都会引致非预期的效果,应尽量避免。
  • 解析函数所有参数都必定会自动被修剪(trim,去掉头尾的空白字符,例如半形空格和换行),如果需要输入纯空白字符的字串、或者需要输入由空白字符开始或结束的字串,则需要使用<nowiki></nowiki>包裹输入的内容。常见情况是输入分隔符参数时,需要输入“, ”的话,就必须写“<nowiki>, </nowiki>”,使用“&nbsp;”不会有你预期的效果。
  • 不能直接使用管道符“|”,要么管道符存在于其他函数或模板中,否则必须使用“{{!}}”。
这样可以:{{#arraymap: 1,2,3 | , | @ | [[DV-@ | @]] | / }}1/2/3
这样不可以:{{#arraymap: 4,5,6 | , | @ | 参数@ | | }}参数4参数5参数6(使用管道符作为输出分隔符,arraymap用法
这样才可以:{{#arraymap: 4,5,6 | , | @ | 参数@ | {{!}} }}参数4|参数5|参数6

其他注意事项:

  • 某些函数对“该参数的值为空白”及“缺少该参数”的理解会有差异,导致运算处理和最终输出出现差错,需要留意该函数有没有这种设定。
  • 字符本身和对应的HTML实体(HTML Entity)不一定会受到一致的处理,甚至不会相互等于,需要留意函数是否会将输入解码或将输出编码。
  • 如果函数突然出现不符合预期的输出,那很有可能是你忘记了对某些特殊字符转义。
  • 参数内容的前后可以随意添加空格和换行,可以适当使用让排版更整齐易懂。

函数列表

A字头函数

arraydefine 用于定义一个新的数组,数组的内容可以用相关的函数获取。此函数会把原字串以分隔符分隔成数组,分隔符也可以是正则表达式。

格式

{{#arraydefine: 数组名称 | 原字串 | 分隔符(默认“,”) | 选项(unique、sort和print) }}

说明

'原字串'应是一列由分隔符隔开的字串
可以定义一个空数组。(见例子)
输出的数组是一个字串数组。
如果未指定,默认的分隔符是半角逗号,,分隔符可以是:1.一个字串(分隔符前后的空格会被忽略),或:2.一个正则表达式,如:/\s*,\s*/。
可以指定选项:unique,sort和print。
  • “unique”表示输出元素值唯一,忽略其中的重复元素
  • 可以通过“sort”设定输出的排序方式,可选的参数为“none”(不排序)、“desc”(降序排序)、“asce”(升序排序)、“asc”(升序排序)、“random”(随机排序)、“reverse”(反向排序)
  • “print”为输出方式,例如“list”(无序列表)
如果分隔符没有被指定,选项会被忽略。

例子

{{#arraydefine:a|red}} → 定义一个叫做a的只有1个元素的数组
{{#arraydefine:b|orange,red ,yellow, yellow}} → 使用默认分隔符定义一个叫做b的有4个元素的数组
{{#arraydefine:c}} → 定义一个叫做c的空数组
{{#arraydefine:d|apple, pear; orange|/\s*[;,]\s*/}} → 使用正则表达式匹配分隔符定义一个叫做d的有3个元素的数组
{{#arraydefine:e|orange,red ,yellow, yellow|,|unique,sort=desc, print=list}} → 用“,”作为分隔符,定义一个元素均是唯一的、以降序排列的数组,并以list形式打印它。


arrayindex 用于输出一个数组某个元素的值,依据元素的序号。

格式

{{#arrayindex: 数组名称 | 序号 | 默认返回值 }}

说明

无效的序号(如:非数字、界外值)会导致输出 空字串 或 默认返回值 。
序号是以0为基准的,第1个元素的序号是0
在序号处输入负值,则会从后往前定位元素。(如:序号-1代表数组的最后一个元素)
当不存在数组,不存在该名称的数组,或者当返回值为空字串时,会输出'默认返回值'。

例子

{{#arrayindex:a |2 }} → a数组的第3个元素
{{#arrayindex:b |-1 }} → b数组的最后一个元素
{{#arrayindex:c |foo |bad value }} → 因为序号无效,输出默认返回值


arraymap 用于按照一定格式输出一个字符串。

格式

{{#arraymap:字符串|分割符|别称|输出格式|输出间隔符}}

说明

别称可以是任意文本。
不填入分割符的情况下,字符串中的每个文本均为独立的分割后字符。
若输出格式中不包含别称,则输出结果会重复“字符串被分割符分隔后的串数”次。

例子

{{#arraymap:1,2||a|bab}} → b1b, b,b, b2b → 不填入分割符,将每个字符均带入至别称中
{{#arraymap:1,2,3,4|,|a|ab}} → 1b, 2b, 3b, 4b → 直接输出,没有输出间隔符
{{#arraymap:1,2|,|a|ab|,}} → 1b,2b → 使用“,”分隔输出后的结果


ask 用于SMW查询符合特定条件的结果并输出。

目前需要施工,暂无信息


C字头函数

css 用于输入页额外CSS样式内容。

格式

{{#css:需要输入的css样式}}

说明

最后一个元素声明结束后,需要再次换行。


D字头函数

defaultsort 用于设定词条在分类中的默认排序键。


格式

{{DEFAULTSORT: 排序键 | 选项(noerror或noreplace) }}

说明

同一词条中,若多次使用该解析函数会报错,可以通过添加“noerror”选项防止。
“noreplace”选项可防止多个排序键的覆盖。
添加分类时,可覆写默认排序键。


E字头函数

explode 用于将字串分割,然后返回指定位置的段落。


格式

{{#explode:字串 | 分割符 | 位置}}

说明

此解析函数区分大小写,请注意检定字串/分割符的大小写是否一致。
若位置为正数,则首项为0,若位置为负数,则输出首项为分割后字串的末项。
分割符默认为空格。
使用特殊字串时,需要使用<nowiki></nowiki>包裹。

例子

{{#explode:0 1 2 3||0}} → 0 →不输入分割符,输出第0项
{{#explode:0,1,2,3|,|-1}} → 3 → 输入分割符,输出倒数第1项
{{#explode:0,1,2,3,,|,|-3}} → 3 → 字串中存在连续分割符,使用倒数位置
{{#explode:0 ,1 , 2 , 3, 4|,|3}} → 3


expr

类型 运算符
组合(括号) ( )
数字 1234.5e (2.718) 、 pi (3.142)
科学计数法(二元) e 、 正负号(一元) +,-
一元运算符 not ceil trunc floor abs exp ln sin cos tan acos asin atan
二元运算符 ^
* / div mod
+ -
四舍五入 round
逻辑运算符 = != <> > < >= <=
and
or

用于验证一个数学表达式,并返回结果。


格式

{{#expr: 表达式 }}

说明

右侧表格为支持的运算符号,越上面的计算符计算优先度越高,越先被计算。
各个计算符的功能可以自行查询。
计算精度及格式取决于服务器操作系统及网站语言的数字格式。
用于计算布尔代数值时,所有非0数均为true,否则为false。
若使用表达式中存在使用魔术字输出的数字,请提前确认魔术字输出结果格式。例如{{PAGESIZE:{{FULLPAGENAME}}}}魔术字输出的格式为11,726,此时需要使用其他解析函数更改输出格式

例子

{{#expr: 1 and -1}} → 1
{{#expr: -1 and 0}} → 0
{{#expr: 0 or -1}} → 1
{{#expr: -1 or 1}} → 1
{{#expr: 0 or 0}} → 0
{{#expr: }} → → 输入空表达式可以得到空结果,不属于错误表达式
{{#expr: 1 > }}表达式错误:缺少>的操作数。
{{#expr: 1 kill 1}}表达式错误:无法识别的词语“kill”。
{{#expr: - 1 }} → -1 → 在数字前的-号和+号作为数字正负判断,不属于错误表达式