帮助:解析函数/explode
explode
分割字符串。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
使用指定分隔符将字符串分割成多段,并返回指定位置的分割结果。如果指定位置超过分割后的数量,返回空字符串。
语法
{{#explode:文本 | 分隔符 | 位置索引 | 限制 }}
- 文本:要分割的字符串。
- 分隔符:用于分割字符串的分隔符。
- 位置索引:要返回的分割结果的位置索引。从0开始,可以是正数或负数,负数表示从末尾开始计数。
- 限制(可选):分割的最大数量。
示例
{{#explode:apple,banana,cherry | , | 1}}
→banana
{{#explode:one two three four | | -1}}
→four
- 空格分隔,位置索引 -1,得到最后一个分割 'four'。
{{#explode:alpha-beta-gamma | - | 2}}
→gamma
{{#explode:aaa bbb ccc ddd eee| |2|3}}
→ccc ddd eee
底层代码
- 代码逻辑:
- 首先,去除输入字符串和分隔符中的标记。
- 如果分隔符为空字符串,默认使用单个空格。
- 检查输入字符串和分隔符的长度是否符合要求,若过长则返回错误信息。
- 使用正则表达式根据分隔符分割字符串,最多分割为指定的限制数量。
- 根据 position 参数返回对应的分割结果,支持正向和反向索引。
- 如果指定的位置不存在,则返回空字符串。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
碧蓝航线 - blhx
原神 - ys
明日方舟 - arknights
恋与深空 - lysk
崩坏:星穹铁道 - sr
代号鸢 - yuan
坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险 - gt
三国杀 - sgs
尘白禁区 - sonw
黑神话:悟空 - wukong
WIKI实验室 - tools
卡拉彼丘 - klbq
白荆回廊 - bjhl
赛尔计划 - seerplan
幻塔 - ht
雷索纳斯 - resonance
绝区零 - zzz
重返未来:1999 - reverse1999
公主连结 - pcr
ミナシゴノシゴト - mnsg
无期迷途 - wqmt
奇迹暖暖 - qjnn
地下城堡3 - dxcb3
鸣潮 - wutheringwaves
交错战线 - crosscore
千年之旅 - elf
世界之外 - world
梦幻模拟战 - langrisser
StardewValley星露谷物语 - stardewvalley
觅长生 - mcs
QQ飞车手游 - qqspeed
方舟指令 - fzzl
偶像荣耀/idoly pride - idolypride
深空之眼 - dhmmr
三国杀OL - sgsol
克鲁赛德战记 - cq
艾尔登法环 - eldenring
铃兰之剑 - llzj
三国杀移动版 - msgs
天地劫 - tdj
怪物弹珠 - gwdz
忘却前夜 - morimens
江南百景图 - jiangnan
食物语-档案馆 - swy
阴阳师妖怪屋 - yysygw
魔法使的约定 - mahoyaku
缺氧 - oni
神甲奇兵 - m2cn
胜利女神NIKKE - nikke
灵魂潮汐 - lhcx