社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
全站通知:
帮助:解析函数/arraymap
刷
历
编
< 帮助:解析函数
跳到导航
跳到搜索
arraymap是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
arraymap用于分割字符串并以指定格式输出。出自扩展 Page Forms。
- 格式
- {{#arraymap:字符串|分隔符|别名|输出wikitext|输出分隔符|输出连接词}}
- 比如{{#arraymap:托奇_环理_小满_辰纱|_|name|'''name'''|、|和}}→ 托奇、环理、小满 和 辰纱
- 字符串为:「托奇_环理_辰纱」
- 分隔符为: 「 _ 」 用于拆分字符串为子字符串
- 别名是:「name」,将在输出wikitext中使用,以替换不同的子字符串
- 输出wikitext是「 '''name'''」,是一段包含别名的wikitext,别名将被替换为子字符串多次输出
- 输出分隔符是 「 、」,在两个输出wikitext之间,会被插入输出分隔符(默认为,)
- 输出连接词是 「和」,在最后一次输出wikitext前,将使用此连接词替代输出分隔符(可选参数)
- 例子
- 指定格式:
{{#arraymap:a_b_c | _ | @ | '''@''' | 、 }}
→ a、b、c - 指定格式:
{{#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)被替换为当前元素的值。
- 对处理后的结果进行修整和展开。
- 如果结果非空,则将其添加到结果数组中。
- 根据指定的输出分隔符和输出连接词,将结果数组中的元素连接成最终的结果字符串。
- 返回结果字符串,用于输出。