社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

帮助:解析函数/arraymap

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

arraymap是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。


arraymap用于分割字符串并以指定格式输出。出自扩展 Page Forms


格式
{{#arraymap:字符串 | 分隔符 | 别名 | 输出wikitext | 输出分隔符 | 输出连接词 }}
比如{{#arraymap:托奇_环理_小满_辰纱 | _ | name | '''name''' ||}}托奇环理小满辰纱
字符串为:「托奇_环理_辰纱」
分隔符为: 「 _ 」 用于拆分字符串为子字符串
别名是:「name」,将在输出wikitext中使用,以替换不同的子字符串
输出wikitext是「 '''name'''」,是一段包含别名的wikitext,别名将被替换为子字符串多次输出
输出分隔符是 「 、」,在两个输出wikitext之间,会被插入输出分隔符
输出连接词是 「和」,在最后一次输出wikitext前,将使用此连接词替代输出分隔符
例子
指定格式:{{#arraymap:a_b_c | _ | @ | '''@''' | 、 }}abc
指定格式:{{#arraymap:a_b_c | _ | @ | 有'''@'''的wikitext | ~间~隔~ }} → 有a的wikitext~间~隔~有b的wikitext~间~隔~有c的wikitext
指定格式和连接词:{{#arraymap:托奇_环理_小满_秘银_从云_辰纱 | _ | @ | '''@''' | , |和 }}一起开会托奇环理小满秘银从云辰纱一起开会
奇怪的连接词:{{#arraymap:点点,丩卩夂忄,马小萌,Lu | , | @ | {{key|@}} | 、 |同时发现了}}点点丩卩夂忄马小萌 同时发现了 Lu
批量处理:{{#arraymap:apple, banana, cherry | , | @ | {{ucfirst:@}}}} → Apple, Banana, Cherry
筛选:{{#arraymap: 2, 7, 4, 9, 3 |,|@|{{#ifexpr: @ > 5 | @ }} }} → 7, 9
更多用法
字符串可以来自SMW查询,模板参数或其他表达式
这可以在不额外使用模板的情况下,格式化SMW查询结果。
比如:{{#arraymap:一个模板用于获取数据 | 分隔符 | 别称 | {{一个模板|别称|其他参数}} }}
比如:{{#arraymap:SMW查询 | 分隔符 | 别称 | 简单的wikitext }}
底层代码
从 $args 数组中提取传递给函数的参数,并进行必要的处理和展开。
根据指定的分隔符将输入字符串拆分为一个数组。
遍历数组中的每个元素,使用指定的输出wikitext($formula)进行替换和展开,wikitext中的别名($var)被替换为当前元素的值。
对处理后的结果进行修整和展开。
如果结果非空,则将其添加到结果数组中。
根据指定的输出分隔符和输出连接词,将结果数组中的元素连接成最终的结果字符串。
返回结果字符串,用于输出。