User:宇文天启/字符串处理
跳到导航
跳到搜索
这是一个更新中的页面,相关内容可能尚未完善或者创建,欢迎您参与本页面的完善。
幫助導航 |
---|
关于萌娘百科 • 常见问题FAQ |
入門 |
Wiki使用指南 • 萌百入门教程 创建新条目 • 寻找原图 上传图片 • 使用图片 重定向建立&修正 • 消歧义 日语的处理 • 繁簡處理 制作投票 • 测试用沙盒 |
編輯 |
编辑规范 • 条目命名 条目编写 • 模板规范 收录范围 • 魔术字 媒体帮助 • 帮助列表 |
模块:String的功能是提供基本的字符串函数。根据这些基本函数能扩展出更多的用法。
大多数函数都提供命名参数和未命名参数,甚至可以混合调用。如果使用命名参数,系统将自动删除该参数两端的空白。
全局选项
以下经测试无效 |
---|
|
基本函数
len
- 返回源字符串长度。
代码示例 | {{#invoke:String|len|target_string}}
|
输出效果 | 13 |
代码示例 | {{#invoke:String|len|s= target_string }}
|
输出效果 | 13 |
- 参数说明:
s | 源字符串 |
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:
- Lua reference: Patterns (as of version 5.1)
- Scribunto patterns
- Scribunto Unicode string patterns
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}}
|
输出效果 | 不 |
- 参数说明:
target | 源字符串 |
pos | 目标字符的位置 |
第一个字符的索引值为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
- 重复一个字符串N次。
代码格式 | {{#invoke:String|rep|source|count}}
|
代码示例 | {{#invoke:String|rep|妮可|2}}妮
|
输出效果 | 妮可妮可妮 |
- 参数说明:
source | 源字符串 |
count | 重复的次数 |
实用扩展
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个字符)。
- {{Str crop left}}
- 从左切除
- 同left()
- {{Str right}}
- 返回左起第n个字符(不含)右边的文字。
- {{Str rightc}}
- 同right()
- {{Str test}}
- {{Str find}}
- {{Str sub}}
- {{Str sub long}}
- {{Str endswith}}
{{Ifnumber}} 是不是数字- 分割字符串:{{Str split}}
- 输出指定匹配结果的指定捕获组:{{Str_match}}