这是一个更新中的页面,相关内容可能尚未完善或者创建,欢迎您参与本页面的完善。
模块: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()
参见