这是一个更新中的页面,相关内容可能尚未完善或者创建,欢迎您参与本页面的完善。
模块:String的功能是提供基本的字符串函数。根据这些基本函数能扩展出更多的用法。
大多数函数都提供命名参数和未命名参数,甚至可以混合调用。如果使用命名参数,系统将自动删除该参数两端的空白。
全局选项
基本函数
len
代码示例 |
{{#invoke:String|len|target_string}}
|
输出效果 |
13
|
代码示例 |
{{#invoke:String|len|s= target_string }}
|
输出效果 |
13
|
sub
代码格式 |
{{#invoke:String|sub|target_string|start_index|end_index}}
|
代码示例 |
{{#invoke:String|sub|xx迟迟不动手,背后恐怕有肮脏的屁眼交易。|4|6}}
|
输出效果 |
迟不动
|
代码格式 |
{{#invoke:String|sub|s= target_string |i= start_index |j= end_index }}
|
代码示例 |
{{#invoke:String|sub|s= 背后恐怕有肮脏的P眼交易 |i= 9 |j= 12 }}
|
输出效果 |
P眼交易
|
s |
源字符串
|
i |
子字符串的起始位置,默认为1
|
j |
子字符串的终止位置,默认为最后一个字符的位置
|
字符串的第一个字符位置为1。如果i或j是负值,则会从字符串结尾计数选择字符。因此,值为-1类似于选择字符串的最后一个字符。
如果下标越界,会产生错误。
sublength
代码格式 |
{{#invoke:String|sublength|s= target_string |i= start_index |len= length }}
|
代码示例 |
{{#invoke:String|sublength|s=背后恐怕有肮脏的P眼交易|i=1|len=4}}
|
输出效果 |
后恐怕有
|
s |
源字符串
|
i |
子字符串的起始位置,默认为0
|
len |
子字符串的长度,默认为能取到的最大长度
|
字符串的第一个字符位置为0,和sub不一样,需要注意。
这个函数已经淘汰,目测是为了保持兼容性留下来的。
match
代码格式 |
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
|
代码示例 |
{{#invoke:String|match|还不动手,背后恐怕有肮脏的屁眼交易。|肮脏|1|1|true}}
|
输出效果 |
肮脏
|
代码格式 |
{{#invoke:String|match|s= source_string |pattern= pattern_string |start= start_index|match= match_number|plain= plain_flag |nomatch= nomatch_output }}
|
代码示例 |
{{#invoke:String|match|s=背后恐怕有肮脏的P眼交易|pattern=[a-zA-Z]|start=2|match=-1|plain=false|nomatch=没找到poi}}
|
输出效果 |
P
|
s |
源字符串
|
pattern |
查找的字符串或正则表达式
|
start |
查找的起始位置,默认为1
|
match |
在存在多个匹配结果时,指定要返回的匹配项,若为-1则返回最后一个。默认为1。
|
plain |
pattern是否为纯文本(非正则),默认为false
|
nomatch |
如果没有匹配项,不输出错误信息而输出指定值
|
如果match_number或START_INDEX超出范围的字符串被查询,那么这个功能产生错误。如果没有找到匹配,也会产生错误。
如果加上参数ignore_errors= true,则错误将被抑制,一个空字符串将在任何故障被退回。
For information on constructing Lua patterns, a form of regular expression, see:
pos
代码格式 |
{{#invoke:String|pos|target_string|index_value}}
|
代码示例 |
{{#invoke:String|pos|有句话说出来你可能不信|3}}
|
输出效果 |
话
|
代码格式 |
{{#invoke:String|pos|target= target_string |pos= index_value }}
|
代码示例 |
{{#invoke:String|pos|target=有句话说出来你可能不信|pos=-2}}
|
输出效果 |
不
|
第一个字符的索引值为1。如果设置负值,将从字符串的结尾倒数选择一个字符。换句话说POS=-1相当于最后一个字符。
0或超出字符串的长度会返回一个错误。
find
代码格式 |
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
|
代码示例 |
{{#invoke:String|find|吃葡萄不吐葡萄皮|葡萄|4|true}}
|
输出效果 |
6
|
代码格式 |
{{#invoke:String|find|source= source_str |target= target_str |start= start_index|plain= plain_flag }}
|
代码示例 |
{{#invoke:String|find|source=难道真的有腌臜的屁眼交易?|target=腌臜|start=3|plain=true}}
|
输出效果 |
6
|
source |
源字符串
|
target |
待查询的字符串
|
start |
起始查询位置,默认为1
|
plain |
target是否为纯文本(非正则),默认为true
|
返回其中的target在source内发现的第一个大于start的位置。如果没有找到target,则该函数返回0。如果source或target的值为missing或empty,也返回0。
这个函数必须基于UTF-8的安全字符串。
replace
代码格式 |
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
|
代码示例 |
{{#invoke:String|replace|康帅博(中国)山寨有险公司|^(%s*)(.*)(%(.*%))(%s*)|%2|all|false}}
|
输出效果 |
康帅博山寨有险公司
|
代码格式 |
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|count=replacement_count|plain=plain_flag}}
|
代码示例 |
{{#invoke:String|replace|source=水浒杀:宋江|pattern=^(.*):(.*)$|replace=%2|count=1|plain=false}}
|
输出效果 |
宋江
|
代码示例 |
{{#invoke:String|replace|source=水浒杀:宋江水|pattern=水|replace=尿|count=1}}
|
输出效果 |
尿浒杀:宋江水
|
source |
源字符串
|
pattern |
匹配字符串或正则表达式
|
replace |
替换目标
|
count |
替换次数,默认为all
|
plain |
pattern是否为纯文本(非正则),默认为true
|
rep
代码格式 |
{{#invoke:String|rep|source|count}}
|
代码示例 |
{{#invoke:String|rep|妮可|2}}妮
|
输出效果 |
妮可妮可妮
|
实用扩展
left/mid/right
- 简单字符串截取函数:left(x)、mid(x,y)、right(x)的实现方法
表达式 |
功能代码+注释 |
实现效果
|
left(5) |
{{#invoke:String|sub|administrator|j=5}} (注)j=x |
admin
|
mid(5,2) |
{{#invoke:String|sublength|s=administrator|i=4|len=2}} (注)i=x-1;len=y |
ni
|
{{#invoke:String|sub|administrator|i=5|j=6}} (注)i=x;j=x+y-1 |
ni
|
right(5) |
{{#invoke:String|sub|administrator|i=-5}} (注)i=-x |
rator
|
- 模版代码
表达式 |
功能代码 |
调用方法
|
left(x) |
{{#invoke:String|sub|{{{1}}}|j={{{2}}}}} |
{{模版名|源字符串|左起字符数}}
|
mid(x,y) |
{{#invoke:String|sub|{{{1}}}|i={{{2}}}|j={{#expr:{{{2}}}+{{{3}}}-1}}}} |
{{模版名|源字符串|起始位置|字符数}}
|
right(x) |
{{#invoke:String|sub|{{{1}}}|i={{#expr:-{{{2}}}}}}} |
{{模版名|源字符串|右起字符数}}
|
startwith/contains/endwith
- 首尾判断:startwith()、endwith()的实现方法
- 包含判断:contains()的实现方法
表达式 |
功能代码 |
实现效果+注释
|
startwith() |
{{#invoke:String|find|administrator|admin}} |
1 (注)返回1则为true,其余值为false
|
contains() |
{{#invoke:String|find|administrator|stra}} |
7 (注)返回0则为false,其余值为true
|
endwith() |
{{#invoke:String|match|administrator|rator$|plain=false|nomatch=0}} |
rator (注)返回0则为false,其余值为true
|
- 布尔值输出
表达式 |
功能代码 |
输出值
|
startwith() |
{{#ifeq:{{#invoke:String|find|administrator|admin}}|1|true|false}} |
true
|
contains() |
{{#ifeq:{{#invoke:String|find|administrator|stra}}|0|false|true}} |
true
|
endwith() |
{{#ifeq:{{#invoke:String|match|administrator|rator$|plain=false|nomatch=0}}|0|false|true}} |
true
|
- 模版代码
表达式 |
功能代码 |
调用方法
|
startwith() |
{{#ifeq:{{#invoke:String|find|{{{1}}}|{{{2}}}}}|1|true|false}} |
{{模版名|源字符串|待匹配首字符串}}
|
contains() |
{{#ifeq:{{#invoke:String|find|{{{1}}}|{{{2}}}}}|0|false|true}} |
{{模版名|源字符串|待匹配字符串}}
|
endwith() |
{{#ifeq:{{#invoke:String|match|{{{1}}}|{{{2}}}$|plain=false|nomatch=0}}|0|false|true}} |
{{模版名|源字符串|待匹配尾字符串}}
|
max/min
split/join
- 字符串连接、拆分:split()、join()的实现方法
- 模版代码
表达式 |
功能代码 |
调用方法
|
join() |
{{#fornumargs:num|value|
{{#switch:{{#var:num|}}
| 1={{#var:value}}
| #default={{#if:{{#var:value|}}|{{{char|,}}}{{#var:value}}}}
}}
}} |
{{模版名|char=连接字符|字符串1|字符串2|字符串3...}}
|
split() |
{{Str split}} |
{{Str split|源字符串|分割字符|变量前缀}}
|
现成模版
- 用于切掉参数
{{{1}}}
中的最后{{{2}}}
个字符(不填则视作切掉0个字符)。
- 从左切除
- 同left()
- 返回左起第n个字符(不含)右边的文字。
- 同right()
参见