用戶:宇文天啟/字符串處理
跳至導覽
跳至搜尋
這是一個更新中的頁面,相關內容可能尚未完善或者創建,歡迎您參與本頁面的完善。
幫助導航 |
---|
關於萌娘百科 • 常見問題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}}