Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/sub

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

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

sub

返回指定字符串的子串。支持UTF-8多字节字符处理,并兼容MediaWiki标签语法。出自扩展 ParserFunctions

语法

{{#sub: 字符串 | 起始位置 | 长度 }}

  • 字符串:要截取的目标字符串
  • 起始位置:截取起始位置(0为首字符)。负值表示从末尾倒数
  • 长度(可选):截取长度。正值表示最大长度,负值表示从末尾忽略的字符数

示例

  • {{#sub:Icecream|3}} → cream
  • {{#sub:Icecream|0|3}} → Ice
  • {{#sub:Icecream|-3}} → eam
  • {{#sub:Icecream|3|3}} → cre
  • {{#sub:Icecream|3|-3}} → cr
  • {{#sub:Žmržlina|3}} → žlina
  • {{#sub:<nowiki>This is a </nowiki>test|1}} → est

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其“特性”。

/** mediawiki-1.37.0\extensions\ParserFunctions\includes\ParserFunctions.php
 * {{#sub: string | start | length }}
 *
 * Returns substring of "string" starting at "start" and having
 * "length" characters.
 *
 * Note: If length is zero, the rest of the input is returned.
 * Note: A negative value for "start" operates from the end of the
 *   "string".
 * Note: A negative value for "length" returns a string reduced in
 *   length by that amount.
 *
 * @param Parser $parser
 * @param string $inStr
 * @param int $inStart
 * @param int $inLength
 * @return string
 */
public static function runSub( Parser $parser, $inStr = '', $inStart = 0, $inLength = 0 ) {
	$inStr = $parser->killMarkers( (string)$inStr );

	if ( !self::checkLength( $inStr ) ) {
		return self::tooLongError();
	}

	if ( (int)$inLength === 0 ) {
		$result = mb_substr( $inStr, (int)$inStart );
	} else {
		$result = mb_substr( $inStr, (int)$inStart, (int)$inLength );
	}

	return $result;
}

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考
碧蓝航线 - blhx

原神 - ys

战双帕弥什 - zspms

明日方舟 - arknights

恋与深空 - lysk

崩坏:星穹铁道 - sr

代号鸢 - yuan

赛马娘 - umamusume

第五人格 - dwrg

坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险 - gt

三国杀 - sgs

尘白禁区 - sonw

地下城堡2 - dxcb2

卡拉彼丘 - klbq

白荆回廊 - bjhl

赛尔计划 - seerplan

雷索纳斯 - resonance

绝区零 - zzz

公主连结 - pcr

ミナシゴノシゴト - mnsg

无期迷途 - wqmt

奇迹暖暖 - qjnn

地下城堡3 - dxcb3

鸣潮 - wutheringwaves

交错战线 - crosscore

千年之旅 - elf

生死狙击2 - ssjj2

世界之外 - world

梦幻模拟战 - langrisser

StardewValley星露谷物语 - stardewvalley

方舟指令 - fzzl

偶像荣耀/idoly pride - idolypride

深空之眼 - dhmmr

三国杀OL - sgsol

克鲁赛德战记 - cq

铃兰之剑 - llzj

冒险岛 - maplestory

悠久之树 - yjzs

三国杀移动版 - msgs

灰烬战线 - hjzx

天地劫 - tdj

物华弥新 - whmx

怪物弹珠 - gwdz

忘却前夜 - morimens

江南百景图 - jiangnan

食物语-档案馆 - swy

新月同行 - xytx