© 2025 [email protected]
KK7MUV留言 | 贡献
无编辑摘要
KK7MUV留言 | 贡献
KK7MUV移动页面编辑教程帮助:编辑教程:​空间归类调整
 
(未显示同一用户的5个中间版本)
第1行: 第1行:
{{注意|本贴还在编辑中!}}
{{编辑中}}


== 修改页面 ==
== 修改页面 ==
第708行: 第708行:
|用于在模板或者是表格内插入管道符号。||
|用于在模板或者是表格内插入管道符号。||
|}
|}
== 函数(待补充) ==


== 状态开关 ==
== 状态开关 ==
第750行: 第748行:




=== 函数(有待补充) ===
 
|}
==解析函数==
===所有函数均适用的注意事项===
以下是一个'''解析函数'''的基本格式:
:<code><nowiki>{{#</nowiki>'''函数名''': '''参数1''' | '''参数2''' | '''...''' | '''参数n''' <nowiki>}}</nowiki></code>
在页面中写上如此一般的代码后,后台解析页面是就会呼叫'''解析函数'''“函数名”,并传入相应的'''参数'''。如果输入的'''参数'''内同样的含有函数(或模板等需要展开运算的代码),'''解析器'''将会先运算和展开'''参数'''里的代码。这种先后次序与数学公式中的括号是同等效果,由内至外逐一展开运算。
<br>
 
 
其他注意事项:
* 某些'''函数'''对“该'''参数'''的值为空白”及“缺少该'''参数'''”的理解会有差异,导致运算处理和最终输出出现差错,需要留意该'''函数'''有没有这种设定。例如[[#regex|regex]]就有这种设定。
* 字符本身和对应的HTML实体(HTML Entity<ref>https://www.w3schools.com/html/html_entities.asp</ref>)不一定会受到一致的处理,甚至不会相互等于,需要留意'''函数'''是否会将输入解码或将输出编码。
* 如果'''函数'''突然出现不符合预期的输出,那很有可能是你忘记了对某些特殊字符转义。
* '''参数'''内容的前后可以随意添加空格和换行,可以适当使用让排版更整齐易懂。
=== expr ===
{| class=wikitable style= float:right; width:45%; height:400px; margin-right:0em
|-
! 类型
! 运算符
|-
|  style="text-align: center" | 组合(括号)
| style="word-spacing: 0.5em; font-weight: bold;" | <code>( )</code>
|-
|  style="text-align: center" rowspan="2" | 数字
| <code>'''1234.5'''</code> 、 <code>'''e'''</code>&nbsp;(2.718) 、 <code>'''pi'''</code>&nbsp;(3.142)
|-
| 科学计数法(二元) <code>'''e'''</code> 、 正负号(一元) <code>'''+'''</code>,<code>'''-'''</code>
|-
|  style="text-align: center" | 一元运算符
| style="word-spacing: 0.5em; font-weight: bold;" | <code>not ceil trunc floor abs exp ln sin cos tan acos asin atan</code>
|-
|  style="text-align: center" rowspan="3" | 二元运算符
| style="word-spacing: 0.5em; font-weight: bold;" | <code>^</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>* / div mod</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>+ -</code>
|-
|  style="text-align: center" | 四舍五入
| style="word-spacing: 0.5em; font-weight: bold;" | <code>round</code>
|-
|  style="text-align: center" rowspan="3" | 逻辑运算符
| style="word-spacing: 0.5em; font-weight: bold;" | <code>= != <> > < >= <=</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>and</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>or</code>
|}
来自ParserFunctions。<br />
用于验证一个数学表达式,并返回它的计算值。<br />
此函数在Scribunto扩展中也可用,函数名为<code>mw.ext.ParserFunctions.expr</code>。
;格式:<code><nowiki>{{#expr: 表达式 }}</nowiki></code>
:支持的运算符如右方表格所示,表格从上到下按运算符的计算优先顺序排列。<br />
:每个运算符的详细功能见[https://meta.wikimedia.org/wiki/Help:Calculation Help:Calculation]。<br />
:计算结果的精度和格式取决于wiki服务器的操作系统,和网站语言的数字格式。
;例子
:当用于计算布尔代数值([https://en.wikipedia.org/wiki/boolean_algebra_(logic) Boolean algebra])时,零值表示<code>false(假)</code>,任何非零值,无论正负,都表示<code>ture(真)</code>:
::<code><nowiki>{{#expr: 1 and -1 }}</nowiki></code> → <code>{{#expr: 1 and -1 }}</code>
::<code><nowiki>{{#expr: 1 and 0 }}</nowiki></code> → <code>{{#expr: 1 and 0 }}</code>
::<code><nowiki>{{#expr: 1 or -1 }}</nowiki></code> → <code>{{#expr: 1 or -1 }}</code>
::<code><nowiki>{{#expr: -1 or 0 }}</nowiki></code> → <code>{{#expr: -1 or 0 }}</code>
::<code><nowiki>{{#expr: 0 or 0 }}</nowiki></code> → <code>{{#expr: 0 or 0 }}</code>
:输入空的表达式会返回一个空字串。输入不正确的表达式会返回其中一个错误消息,错误可以被解析函数#iferror|iferror]]函数捕捉到:
::<code><nowiki>{{#expr: }}</nowiki></code> → <code>{{#expr: }}</code>
::<code><nowiki>{{#expr: 1+ }}</nowiki></code> → <code>{{#expr: 1+ }}</code>
::<code><nowiki>{{#expr: 1 = }}</nowiki></code> → <code>{{#expr: 1 = }}</code>
::<code><nowiki>{{#expr: 1 foo 2 }}</nowiki></code> → <code>{{#expr: 1 foo 2 }}</code>
:加减运算符在数字之前与之后的意义不同,它们有可能被当作正负号,而不会被当作不正确的表达式:
::<code><nowiki>{{#expr: +1 }}</nowiki></code> → <code>{{#expr: +1 }}</code>
::<code><nowiki>{{#expr: -1 }}</nowiki></code> → <code>{{#expr: -1 }}</code>
::<code><nowiki>{{#expr: + 1 }}</nowiki></code> → <code>{{#expr: + 1 }}</code>
::<code><nowiki>{{#expr: - 1 }}</nowiki></code> → <code>{{#expr: - 1 }}</code>
;<font color=red>'''注意'''</font>
:如果使用魔术字的输出值,必须使用其原始格式,如:移除所有分割逗号,转换为数字。<br />
:比如<code><nowiki>{{NUMBEROFUSERS}}</nowiki></code>输出的是<code>{{NUMBEROFUSERS}}</code>,但是实际需要的是<code>{{formatnum:{{NUMBEROFUSERS}}|R}}</code>,原始格式可以用<code><nowiki>{{formatnum:{{NUMBEROFUSERS}}|R}}</nowiki></code>来得到,详见[[解析函数#formatnum|formatnum]]。例子如下:
::<code><nowiki>{{#expr:{{NUMBEROFUSERS}}+100}}</nowiki></code> → <code>{{#expr:{{NUMBEROFUSERS}}+100}}</code>
::<code><nowiki>{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}</nowiki></code> → <code>{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}</code>
;<font color=red>'''注意'''</font>
:运算符<code>mod</code>会在某些除数值下给出错误的结果:
::<code><nowiki>{{#expr: 123 mod (2^64-1)}}</nowiki></code> → <code>{{#expr: 123 mod (2^64-1)}}</code>(返回空字串,结果本应是<code>123</code>)
;补充
:若想要进行关于日期的计算(比如:将当前日期与某日期进行比较),首先应将时间转化为“1970年1月1日之后多少秒”的结构,可以使用<code><nowiki>{{#time: xNU }}</nowiki></code>来转换(详见[[解析函数#time|time]]),然后就可以把日期当作数字来进行计算和比较了。
;关于四舍五入
:将运算符<code>round</code>左边的数四舍五入,使其小数位数为<code>round</code>右边的数。
:如需进一取整(向上舍入),使用<code>ceil</code>;如需舍去取整(向下舍入),使用<code>floor</code>。
<div class="table-responsive table-wrapper">
{| class=wikitable style=width:60%; height:400px; margin-left:2em
!例子
!结果
!舍入方法
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/3 round 5 }}</code> || {{#expr: 1/3 round 5 }} || 保留5位小数。舍去的部分首位数值<5,则不会进一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr: 1/6 round 5 }}</nowiki></code> || {{#expr: 1/6 round 5 }} || 保留5位小数。舍去的部分首位数值≥5,则进一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr: 8.99999/9 round 5 }}</nowiki></code> || {{#expr: 8.99999/9 round 5 }} || 同上方法,结果是进一得到的。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 '''round -2''' }}</code> || {{#expr: 1234.567 round -2 }} || 此处保留到百位。要保留到小数点左侧,应使用负的位数。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 '''round 2''' }}</code> || {{#expr: 1234.567 round 2 }} || 此处保留到百分位。要保留到小数点右侧,应使用正的位数。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1234.5678 round 2'''.3''' }}</code> || {{#expr: 1234.567 round 2.3 }} || 位数值如果输入了带小数的数值,小数部分不起作用。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''trunc''' 1234.5678 }}</code> || {{#expr: trunc 1234.567 }} || 保留到整数可以使用<code>trunc</code>。
|-
! colspan=3  | 保留到整数的舍入规则:
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/3 '''round 0''' }}</code> || {{#expr: 1/3 round 0 }} || 保留到最近的整数,向下舍入至零。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 1/2 '''round 0''' }}</code> || {{#expr: 1/2 round 0 }} || 保留到最近的整数,向上舍入至一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> 3/4 '''round 0''' }}</code> || {{#expr: 3/4 round 0 }} || 保留到最近的整数,向上舍入至一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -1/3 '''round 0''' }}</code> || {{#expr: -1/3 round 0 }} || 保留到最近的整数,向上舍入至零。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -1/2 '''round 0''' }}</code> || {{#expr: -1/2 round 0 }} || 保留到最近的整数,向下舍入至负一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> -3/4 '''round 0''' }}</code> || {{#expr: -3/4 round 0 }} || 保留到最近的整数,向下舍入至负一。
|-
! colspan=3  | 使用<code>ceil</code>和<code>floor</code>时的舍入规则:
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil('''1/3''')''' }}</code> || {{#expr: ceil(1/3) }} || 向上舍入至一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''floor('''1/3''')''' }}</code> || {{#expr: floor(1/3) }} || 向下舍入至零。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil('''-1/3''')''' }}</code> || {{#expr: ceil(-1/3) }} || 向上舍入至零。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''floor('''-1/3''')''' }}</code> || {{#expr: floor(-1/3) }} || 向下舍入至负一。
|-
| <code style="white-space:nowrap;"><nowiki>{{#expr:</nowiki> '''ceil''' 1/3 }}</code> || {{#expr: ceil 1/3 }} || 没有被舍入处理,因为<code>1</code>就是整数<br /><font color=red>'''注意:'''</font>上述表达式含义为<code>'''(ceil''' 1''')'''/3</code>,而不是<code>'''ceil('''1/3''')'''</code>,应注意。
|}
|}
</div>
;关于字符串
:表达式只能用于数字值,不能比较字串或者字符。如需比较字串和字符,请使用[[解析函数#ifeq|ifeq]]。例子:
::<code><nowiki>{{#expr: "a" = "a" }}</nowiki></code> → <code>{{#expr: "a" = "a" }}</code>
::<code><nowiki>{{#expr: a = a }}</nowiki></code> → <code>{{#expr: a = a }}</code>
::<code><nowiki>{{#ifeq: a | a | 1 | 0 }}</nowiki></code> → <code>{{#ifeq: a | a | 1 | 0 }}</code>
===lc===
MediaWiki原生函数。<br>
把输入的字串中所有字母变成小写。<br>
;格式:<code><nowiki>{{lc: 字串 }}</nowiki></code>
;例子:<code><nowiki>{{lc: A字串 BC }}</nowiki></code>→ <code>{{lc: A字串 BC }}</code>
===lcfirst===
MediaWiki原生函数。<br>
把输入的字串中第一个字母变成小写。<br>
;格式:<code><nowiki>{{lcfirst: 字串 }}</nowiki></code>
;例子:<code><nowiki>{{lcfirst: A字串 BC }}</nowiki></code>→ <code>{{lcfirst: A字串 BC }}</code>
:<code><nowiki>{{lcfirst: 字串 BC }}</nowiki></code>→<code>{{lcfirst: 字串 BC }}</code>
=== if ===
来自ParserFunctions。<br />
用于鉴别一个测试字串是否为空。一个只含有空白字符的字串会被判定为空。
;格式:<code><nowiki>{{#if: 测试字串 | 字串非空输出值 | 字串空(或只有空白字符)输出值 }}</nowiki></code>
:<code><nowiki>{{#if: 参数1 | 参数2 | 参数3 }}</nowiki></code>
;说明:
:这个函数首先检查'参数1'是否为空。如果'参数1'不为空,则显示'参数2'。如果'参数1'为空或只含有空白字符(如空格,换行符等),则显示'参数3'。
;例子:
:<code><nowiki>{{#if: | yes | no}}</nowiki></code> → <code>{{#if: | yes | no}}</code>
:<code><nowiki>{{#if: string | yes | no}}</nowiki></code> → <code>{{#if: string | yes | no}}</code>
:<code><nowiki>{{#if:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| yes | no}}</nowiki></code> → <code>{{#if:    | yes | no}}</code>
:<code><nowiki>{{#if:</nowiki><br /><br /><br /><nowiki>| yes | no}}</nowiki></code> → <code>{{#if:| yes | no}}</code>
:测试字串总是被解释为纯文本,所以数学表达式不会被鉴别。
::<code><nowiki>{{#if: 1==2 | yes | no }}</nowiki></code> → <code>{{#if: 1==2 | yes | no }}</code>
::<code><nowiki>{{#if: 0 | yes | no }}</nowiki></code> → <code>{{#if: 0 | yes | no }}</code>
:最后一个参数(字串空输出值)可以省略。
::<code><nowiki>{{#if: foo | yes }}</nowiki></code> → <code>{{#if: foo | yes }}</code>
::<code><nowiki>{{#if: | yes }}</nowiki></code> → <code>{{#if: | yes }}</code>
::<code><nowiki>{{#if: foo | | no}}</nowiki></code> → <code>{{#if: foo | | no}}</code>
:这个函数可以被嵌套。嵌套时,需用完整格式的<code>#if</code>函数,替代外层<code>#if</code>函数的某个参数。最大可以嵌套七层,具体取决于网站和存储限制。
::<code><nowiki>{{#if: 测试字串1 | 字串1非空输出值 | {{#if: 测试字串2 | 字串2非空输出值 | 字串2空(或只有空白字符)输出值 }} }}</nowiki></code>
:可以用一个参数当作#if函数的测试字串。必须在变量名的后面加上管道符<code>|</code>。
::<code><nowiki>{{#if:{{{1</nowiki><span style="color:red; font-weight:bold">|</span>}}}| 变量1中输入了文本 | 变量1中没有文本 }}</code>
:对于在模板中的应用,更多例子可参照:[https://www.mediawiki.org/wiki/Help:Parser_functions_in_templates Help:Parser functions in templates]
=== ifeq ===
来自ParserFunctions。<br />
用于比较两个字串是否相同。
;格式:<code><nowiki>{{#ifeq: 测试字串1 | 测试字串2 | 相同时输出值 | 不相同时输出值 }}</nowiki></code>
;例子:
:如果两个字串都是有效的数值,则会按照数值进行比较。
::<code><nowiki>{{#ifeq: 01 | 1 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 01 | 1 | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: 0 | -0 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 0 | -0 | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: 1e3 | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 1e3 | 1000 | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}</code>
:否则会按照文本进行比较,区分大小写。
::<code><nowiki>{{#ifeq: foo | bar | equal | not equal}}</nowiki></code> → <code>{{#ifeq: foo | bar | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: foo | Foo | equal | not equal}}</nowiki></code> → <code>{{#ifeq: foo | Foo | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: "01" | "1" | equal | not equal}}</nowiki></code> → <code>{{#ifeq: "01" | "1" | equal | not equal}}</code> ''(注意与上方不带引号的区别)''
::<code><nowiki>{{#ifeq: 10^3 | 1000 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 10^3 | 1000 | equal | not equal}}</code> ''(注意与上方使用了<code>#expr</code>函数的区别)''
;<font color=red>'''注意'''</font>:
:<code>#ifeq</code>和<code>#switch</code>的数值比较与使用<code>#expr</code>进行比较不同:
::<code><nowiki>{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}</nowiki></code> → <code>{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}</code>
::<code><nowiki>{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}</nowiki></code> → <code>{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}</code>
:因为PHP以整数型比较两个数字,然而:
::<code><nowiki>{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}</nowiki></code> → <code>{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}</code>
:因为MediaWiki转换文本数字为浮点型,对于比较大的整数,会导致末尾被舍去。
;<font color=red>'''注意'''</font>:
:在解析函数内部的标签和解析函数(如<code>&lt;nowiki></code>)会被暂时替换为一个唯一的代码。这会影响到比较结果:
::<code><nowiki>{{#ifeq: &lt;nowiki>foo&lt;/nowiki> | &lt;nowiki>foo&lt;/nowiki> | equal | not equal}}</nowiki></code> → <code>{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}</nowiki></code> → <code>{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}</nowiki></code> → <code>{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}</code>
::<code><nowiki>{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}</nowiki></code> → <code>{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}</code>
:如果被比较的字串 是由等价调用 含有这类标签的 '''同一'''模板 得到的,则值为真;但如果为 含有相同的这类标签的 '''两个'''模板,则值为假。
;<font color=red>'''注意'''</font>:
:在用页面名变量(如:<code><nowiki>{{FULLPAGENAME}}</nowiki></code>)比较当前页面标题时,应小心。这些变量会将特殊字符转换为数字HTML实体。这会造成具有误导性的结果。比如,在一个标题为“L'Aquila”的页面上:
::<code><nowiki>{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}</nowiki></code> → <code>{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}</code>
:上面的结果实际是错误的。经过改进之后,现在它会返回“<code>equal</code>”。但是对于其他情况可能不会如此。如<code><nowiki>{{FULLPAGENAME}}</nowiki></code>,在部分网站,可能会将第一个字母替换为大写,可能会将所有下划线替换为空格。
:为了解决这个问题,可以在两个参数上都应用变量:
::<code><nowiki>{{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal}}</nowiki></code> → <code>equal</code>
===padleft===
将参数1通过在左侧补上参数3指定的字符串(默认为0)补足到参数2指定的长度,例如 <code>{{padleft:44|3|0}}</code> 生成 044。参数3指定的字符串可能被截断以保证补足后的字符串长度满足要求。
;例子&输出
<code><nowiki>{{padleft:xyz|5}}</nowiki></code> → {{padleft:xyz|5}}
<code><nowiki>{{padleft:xyz|5|_}}</nowiki></code> → {{padleft:xyz|5|_}}
<code><nowiki>{{padleft:xyz|5|abc}}</nowiki></code> → {{padleft:xyz|5|abc}}
<code><nowiki>{{padleft:xyz|2}}</nowiki></code> → {{padleft:xyz|2}}
<code><nowiki>{{padleft:|1|xyz}}</nowiki></code> → {{padleft:|1|xyz}}
=== switch ===
来自ParserFunctions。<br />
这个函数将一个输入值与若干个情况值对比,如果找到了相符的情况,则返回该情况下的输出字串。
;格式:
<pre>
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2 = 返回结果2
| ...
| 情况字串n = 返回结果n
| 默认结果
}}
</pre>
;例子:
:<code><nowiki>{{#switch: baz | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: baz | foo = Foo | baz = Baz | Bar }}</code>
:<code><nowiki>{{#switch: foo | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: foo | foo = Foo | baz = Baz | Bar }}</code>
:<code><nowiki>{{#switch: zzz | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: zzz | foo = Foo | baz = Baz | Bar }}</code>
:<code>#switch</code>和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。
;关于默认结果:
:在当没有'情况字串'与'比较字串'相符时,会返回'默认结果':
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz | Bar }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz | Bar }}</code>
:按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。
::<code><nowiki>{{#switch: test | Bar | foo = Foo | baz = Baz }}</nowiki></code> → <code>{{#switch: test | Bar | foo = Foo | baz = Baz }}</code>
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz | B=ar }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz | B=ar }}</code>
:或者'默认结果'可以用'情况字串'<code>#default</code>来特别声明。
<pre>
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2 = 返回结果2
| ...
| 情况字串n = 返回结果n
| #default = 默认结果
}}
</pre>
:用这种方式声明的'默认结果'可以放在函数内的任何位置:
::<code><nowiki>{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}</nowiki></code> → <code>{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}</code>
:如果'默认结果'被省略,当没有相符情况时,不会返回结果:
::<code><nowiki>{{#switch: test | foo = Foo | baz = Baz }}</nowiki></code> → <code>{{#switch: test | foo = Foo | baz = Baz }}</code>
;一组情况的结果:
:可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。
<pre>
{{#switch: 比较字串
| 情况字串1 = 返回结果1
| 情况字串2
| 情况字串3
| 情况字串4 = 返回结果234
| 情况字串5 = 返回结果5
| 情况字串6
| 情况字串7 = 返回结果67
| #default = 默认结果
}}
</pre>
:在这里情况2、3、4都会返回'返回结果234',情况6、7都会返回'返回结果67'。
;关于比较:
:与<code>#ifeq</code>相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写:
::<code><nowiki>{{#switch: 0 + 1 | 1 = one | 2 = two | three}}</nowiki></code> → <code>{{#switch: 0 + 1 | 1 = one | 2 = two | three}}</code>
::<code><nowiki>{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}}</nowiki></code> → <code>{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}}</code>
::<code><nowiki>{{#switch: a | a = A | b = B | C}}</nowiki></code> → <code>{{#switch: a | a = A | b = B | C}}</code>
::<code><nowiki>{{#switch: A | a = A | b = B | C}}</nowiki></code> → <code>{{#switch: A | a = A | b = B | C}}</code>
:'情况字串'可以是空:
::<code><nowiki>{{#switch: | = Nothing | foo = Foo | Something }}</nowiki></code> → <code>{{#switch: | = Nothing | foo = Foo | Something }}</code>
:当出现一个相符情况后,之后的'情况字串'会被忽略:
::<code><nowiki>{{#switch: b | f = Foo | b = Bar | b = Baz | }}</nowiki></code> → <code>{{#switch: b | f = Foo | b = Bar | b = Baz | }}</code>
;<font color=red>'''注意'''</font>:
:<code>#switch</code>和<code>#ifeq</code>的数值比较方法与表达式比较不同:
::<code><nowiki>{{#switch: 12345678901234567 | 12345678901234568 = A | B}}</nowiki></code> → <code>{{#switch: 12345678901234567 | 12345678901234568 = A | B}}</code>
::<code><nowiki>{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}</nowiki></code> → <code>{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}</code>
:具体见<code>[[解析函数#ifeq|ifeq]]</code>处的第一条“注意”。
;关于原始等号符:
:'情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符<code>=</code>的模板<code><nowiki>{{=}}</nowiki></code>。
:应用的例子:
<pre>
{{#switch: 1=2
| 1=2 = raw
| 1<nowiki>=</nowiki>2 = nowiki
| 1&#61;2 = html
| 1{{=}}2 = template
| default
}}
</pre> → <code>{{#switch: 1=2
| 1=2 = raw
| 1<nowiki>=</nowiki>2 = nowiki
| 1&#61;2 = html
| 1{{=}}2 = template
| default
}}</code>
;关于替换<code>#ifeq</code>:
:<code>#switch</code>可以用来减少扩展深度。
:比如:
::<code><nowiki>{{#switch:{{{1}}} |情况1=分支1 |情况2=分支2 |情况3=分支3 |分支4}}</nowiki></code>
:等价于:
::<code><nowiki>{{#ifeq:{{{1}}}|情况1 |分支1 |{{#ifeq:{{{1}}}|情况2 |分支2 |{{#ifeq:{{{1}}}|情况3 |分支3 |分支4}}}}}}</nowiki></code>
:写成便于阅读的格式即为:
<source lang="xml">
{{#ifeq:{{{1}}}|情况1
  |<!--then-->分支1
  |<!--else-->{{#ifeq:{{{1}}}|情况2
                |<!--then-->分支2
                |<!--else-->{{#ifeq:{{{1}}}|情况3
                              |<!--then-->分支3
                              |<!--else-->分支4}}}}}}
</source>
===uc===
MediaWiki原生函数。<br>
把输入的字串中所有字母变成大写。<br>
;格式:<code><nowiki>{{uc: 字串 }}</nowiki></code>
;例子:<code><nowiki>{{uc: a字串 bc }}</nowiki></code>→ <code>{{uc: a字串 bc }}</code>
===ucfirst===
MediaWiki原生函数。<br>
把输入的字串中第一个字母变成大写。<br>
;格式:<code><nowiki>{{ucfirst: 字串 }}</nowiki></code>
;例子:<code><nowiki>{{ucfirst: a字串 bc }}</nowiki></code>→ <code>{{ucfirst: a字串 bc }}</code>
:<code><nowiki>{{ucfirst: 字串 bc }}</nowiki></code>→<code>{{ucfirst: 字串 bc }}</code>
==参考资料==