这是Module:String的文档页面
此模块文档被引用於約2,380,000個頁面。 為了避免造成大規模的影響,所有對此模块文档的編輯應先於沙盒或測試樣例上測試。 測試後無誤的版本可以一次性地加入此模块文档中,但是修改前請務必於討論頁發起討論。 模板引用數量會自動更新。 |
这个模块提供了基本的字符串操作函数。
此处提供的大多数函数都可以使用命名参数、未命名参数或混合参数调用。 如果使用命名参数,Mediawiki将自动从参数中删除任何前导或尾随空格。取决于预期用途,保留或删除此类空白各有优劣的。
ignore_errors
error_category
no_category
此模块的单元测试可在Module:String/testcases进行。
此函数返回目标字符串的长度。
用法:
{{#invoke:String|len|target_string}}
或
{{#invoke:String|len|s= target_string }}
参数:
示例:
{{#invoke:String|len| abcdefghi }}
→ 11{{#invoke:String|len|s= abcdefghi }}
→ 9用法:
{{#invoke:String|sub|target_string|start_index|end_index}}
或
{{#invoke:String|sub|s= target_string |i= start_index |j= end_index }}
参数:
字符串的第一个字符的索引为1。如果i或j是负值,则将其解析为通过从字符串末尾计数来选择字符。因此,值-1与选择字符串的最后一个字符相同。
如果请求的索引超出给定字符串的范围,则会报告错误。
示例:
"{{#invoke:String|sub| abcdefghi }}"
→ " abcdefghi ""{{#invoke:String|sub|s= abcdefghi }}"
→ "abcdefghi""{{#invoke:String|sub| abcdefghi | 3 }}"
→ "bcdefghi ""{{#invoke:String|sub|s= abcdefghi |i= 3 }}"
→ "cdefghi""{{#invoke:String|sub| abcdefghi | 3 | 4 }}"
→ "bc""{{#invoke:String|sub|s= abcdefghi |i= 3 |j= 4 }}"
→ "cd"此函数实现了{{Str sub old}}的功能,保留仅为维持旧的模板。
用法:
{{#invoke:String|sublength|s= 目标字符串 |i= 开始索引 |len= 长度 }}
参数:
示例:
{{#invoke:String|sublength|s= abcdefghi }}
→ abcdefghi{{#invoke:String|sublength|s= abcdefghi |i= 3 }}
→ defghi{{#invoke:String|sublength|s= abcdefghi |i= 3 |len= 4 }}
→ defg此函数从源字符串返回一个匹配指定模式的子字符串。
用法:
{{#invoke:String|match|源字符串|模式字符串|开始索引|匹配数量|纯标记|无匹配输出}}
或者
{{#invoke:String|match|s= 源字符串 |pattern= 模式字符串 |start= 开始索引|match= 匹配数量|plain= 纯标记 |nomatch= 无匹配输出 }}
参数:
如果match_number或start_index超出了查询的字符串的范围,此函数会产生错误。如果没有找到匹配,也会产生错误。
如果添加了参数ignore_errors=true,那么错误会被禁止,失败时返回的是一个空字符串。
匹配是Lua的一种正则表达式,更多信息可以参考:
示例:
{{#invoke:String|match| abc123def456 |%d+}}
→ 123{{#invoke:String|match|s= abc123def456 |pattern= %d+ }}
→ 123{{#invoke:String|match| abc123def456 |%d+|6}}
→ 23{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 }}
→ 3{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 |match= 2 }}
→ 456{{#invoke:String|match|s= abc123%d+ |pattern= %d+ }}
→ 123{{#invoke:String|match|s= abc123%d+ |pattern= %d+ |plain= true }}
→ %d+{{#invoke:String|match|s= abc |pattern= %d }}
→ 字符串模块出错:找不到匹配{{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}
→ No numeric characters in string{{#invoke:String|match|s= abc |pattern= %d |ignore_errors= true }}
→{{#invoke:String|match|s= 0012001200 |pattern= 0*(%d*) }}
→ 12001200返回在目标字符串中的位置pos处的单个字符。
用法:
{{#invoke:String|pos|目标字符串|索引值}}
或
{{#invoke:String|pos|target= 目标字符串 |pos= 索引值 }}
参数:
第一个字符的索引值为1。
如果为负值,则此函数会从字符串的最后面开始倒数。也就是说,pos=-1相当于返回最后一个字符。
如果此值为0,或者超出了字符串的长度,则会返回错误。
示例:
{{#invoke:String|pos| abcdefghi | 4 }}
→ c{{#invoke:String|pos|target= abcdefghi |pos= 4 }}
→ d此函数与{{str_find}}的行为重复,包含了其所有的技巧,仅为支持存在的模板,但是对于新的代码和模板不推荐使用。新的代码建议直接使用find函数。
返回源字符串中匹配目的的第一个索引。索引是从1开始数的,如果源字符串中找不到目标字符串,则返回-1。
注意:如果目标字符串是空白或者缺失,则函数返回值为1,这可能不是预期的行为,必须要单独考虑。
用法:
{{#invoke:String|str_find|源字符串|目标字符串}}
或
{{#invoke:String|str_find|source= 源字符串 |target= 目标字符串 }}
参数:
示例:
{{#invoke:String|str_find| abc123def }}
→ 1{{#invoke:String|str_find|source= abc123def }}
→ 1{{#invoke:String|str_find| abc123def |123}}
→ 5{{#invoke:String|str_find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|str_find| abc123def |not}}
→ -1此函数在一个字符串内搜索另一个字符串。
用法:
{{#invoke:String|find|源字符串|目标字符串|开始索引|纯标记}}
或
{{#invoke:String|find|source= 源字符串 |target= 目标字符串 |start= 开始索引 |plain= 纯标记 }}
参数:
此函数返回了在索引>"start",其中"source"中可以持续到"target"。索引是从1开始数的。如果没有找到目标字符串,函数返回0。如果索引或者目的缺失或者是空的,此函数也会返回0。
此函数应该可以安全地操作UTF-8字符串。
示例:
{{#invoke:String|find|abc123def|12}}
→ 4{{#invoke:String|find|source=abc123def|target=12}}
→ 4{{#invoke:String|find|source=abc123def|target=pqr}}
→ 0{{#invoke:String|find| abc123def |123}}
→ 5{{#invoke:String|find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|find|source=abc123def|target=%d |start=3 |plain=false }}
→ 4与未命名的参数使用时,两端的空格会被保留且被计入:
{{#invoke:String|find| abc123def |c|false}}
→ 5{{#invoke:String|find|source= abc123def |target=c|plain=false}}
→ 3{{#invoke:string|find|abc 123 def|%s|plain=false}}
→ 4检测字符串是否存在:
{{#ifexpr:{{#invoke:string|find|haystack|needle}}|Found needle|Didn't find needle}}
→ Didn't find needle
此函数在一个字符串内替换到目的字符串或者模式。此函数是通过调用mw.ustring.gsub
实现的。
用法:
{{#invoke:String|replace|源字符串|模式字符串|替换字符串|替换次数|纯标记}}
或
{{#invoke:String|replace|source= 源字符串 |pattern= 模式字符串 |replace= 替换字符串 |count= 替换次数 |plain= 纯标记 }}
参数:
示例:
"{{#invoke:String|replace| abc123def456 |123|XYZ}}"
→ " abcXYZdef456 ""{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= XYZ }}"
→ "abcXYZdef456""{{#invoke:String|replace| abc123def456 |%d+|XYZ|1|false}}"
→ " abcXYZdef456 ""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= XYZ |count=1 |plain= false }}"
→ "abcXYZdef456""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= XYZ |plain= false }}"
→ "abcXYZdefXYZ"{{#invoke:String|replace|source= 0012001200 |pattern= ^0* |plain= false }}
→ 12001200将一个字符串重复n次,其本质为string.rep
。
用法:
{{#invoke:String|rep|源|次数}}
参数:
示例:
"{{#invoke:String|rep|hello|3}}"
→ "hellohellohello""{{#invoke:String|rep| hello | 3 }}"
→ " hello hello hello "
|
This article uses material from the Wikipedia 中文 article doc, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). 除非另有声明,本网站内容采用CC BY-SA 4.0授权。 Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki 中文 (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.