【问题标题】:How to remove certain letters from input string in Mediawiki?如何从 Mediawiki 中的输入字符串中删除某些字母?
【发布时间】:2016-01-07 21:44:02
【问题描述】:

我创建了一个新的 Wiki 条目,它使用名为 filter 的 Wiki 模板。看起来是这样的:

{{filter
|ListofFruits= 
* Apple
* Orange
* Banana
}}

现在我想在我的过滤器模板中检索列表,但没有* 并且没有换行符。因此,模板必须像这样输出所有这些水果:

Apple Orange Banana

如何做到这一点?我搜索了纪录片,但没有找到有关过滤参数的任何内容。

【问题讨论】:

  • 是否要模板解析字符串* Apple\n * Orange...,并输出Apple Orange...
  • @leo 可以,但是参数中没有写\n。我已经尝试过使用 {{#replace:{{{ListofFruits}}}|\n *|}} 但这不起作用。
  • 并为模板使用更方便的格式,例如{{filter |fruits=Apple;Orange;Banana}} 不是一个选项?
  • 很遗憾没有,因为我需要这个列表作为信息框
  • 我不明白,如果您在普通信息框中使用模板,为什么,您不能只使用像 {{filter |fruits=Apple;Orange;Banana}} 这样的格式,然后以任何你想要的方式打印出来?如果您需要的不仅仅是搜索和替换功能,您可以使用 Extension:Arrays 来重新创建您喜欢的列表,例如在一个地方作为Apple Orange ...,在另一个地方作为* Apple\n *Orange\ ...

标签: replace mediawiki mediawiki-templates


【解决方案1】:

除非您真的非常需要模板的输入采用这种格式(例如,因为它是由您无法控制的机器人填充的),否则请考虑使用更易于解析的格式,例如:

{{filter
  |ListofFruits=Apple;Orange;Banana
}}

然后您可以使用替换或Arrays extension 的更高级的可能性来根据需要格式化列表。

带替换:

<!-- Create a bullet list -->
*{{#replace:{{{ListofFruits}}}|;|<nowiki />
* 
}}

<!-- Create a space separated list -->
{{#replace:{{{ListofFruits}}}|;|&nbsp;}}

使用数组:

<!-- Define array a -->
{{#arraydefine:a|{{{ListofFruits}}}|;}}

<!-- Print a as bullet list -->
{{#arrayprint:a ||@@@@|<nowiki />
*@@@@ }}

<!-- Print a as space separated list -->
{{#arrayprint:a|&nbsp;}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2023-03-14
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多