「モジュール:String/doc」の版間の差分
(変更) |
Iyokanmorigen (トーク | 投稿記録) 細 (1版 をインポートしました) |
(相違点なし)
|
2019年1月30日 (水) 16:40時点における版
ファイル:Edit-copy green.svg | これはモジュール:Stringの解説サブページです。 使用方法、カテゴリ、およびその他テンプレート:SUBJECTSPACE jaページ自体に含まれない情報を収容しています。 |
ファイル:Ambox important.svg | このLuaモジュールは172,000以上のページで使われています。 余計な混乱やサーバーへの負荷を避けるために、どんな変更でも最初はモジュールのサンドボックス・サブページ、テストケース・サブページで試すべきです。そうすれば、試した変更を1度の編集でこのモジュールに加えることができます。しかし、最初にあなたの提案した変更を、この項目のノートで議論するようにお願いします。 |
ファイル:Padlock.svg | このモジュールは保護されています。このモジュールは非常に多くのページで使用されています。荒らしまたは過失によって多くのページが影響を受け、また些細な編集でもサーバーに多大な負荷をかけるため、編集保護されています。 |
文字列を扱ういくつかの関数を提供するモジュールです。UTF-8でエンコードされた文字列を取り扱えます。
このモジュールのユニットテストについてはモジュール:String/testcasesをご参照ください。
共通引数
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
ignore_errors | エラー無視 | なし |
|
error_category | エラーカテゴリ | Category:モジュールStringのエラー | エラーがあるときのCategory:追跡カテゴリ名を指定する |
no_category | カテゴリ付与 | なし |
|
使い方
len
文字列の長さを返します。 <syntaxhighlight lang="moin"> 3 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> 3 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
s | 文字列 | なし | 対象の文字列 |
例:
{{#invoke:String|len| abcdefghi }}
→ 11{{#invoke:String|len|s= abcdefghi }}
→ 9
sub
文字列から指定された部分の文字列を抜き出して返します。 <syntaxhighlight lang="moin"> 文字列 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> 文字列 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
s | 文字列 | なし | 元の文字列 |
i | 開始位置 | 1 | 抜き出す初めの文字の位置 |
j | 終了位置 | -1 | 抜き出す最後の文字の位置 |
開始位置・終了位置には負の数を指定することも可能です。その場合、文字列の後ろから数えます。例えば、「-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"
sublength
この関数は{{Str sub}}を実装しており、Str subのような古いテンプレートを維持するために残されています。文字列から指定された部分の文字列を抜き出して返します。
<syntaxhighlight lang="moin"> 文字列 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
s | 文字列 | なし | 元の文字列 |
i | 開始位置 | 1 | 抜き出す初めの文字の位置。1文字目は"0"を指定します |
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
match
パターンに一致する文字列を返します。 <syntaxhighlight lang="moin"> エラー出力 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> エラー出力 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
s | 文字列 | なし | 検索対象の文字列 |
pattern | パターン | なし | 検索する文字列パターン |
start | 検索開始位置 | 1 | 検索を開始する文字の位置 |
match | 一致番号 | 1 | 検索開始位置から何番目の一致箇所を返すか |
plain | プレーンフラグ | false |
|
nomatch | エラー出力 | なし | 何もマッチしなかったときに返す文字列 何も指定しないとエラーを返す(既定) |
検索開始位置・一致番号には負の数を指定することも可能です。その場合、後ろから数えます。
パターンにキャプチャがある場合はそのキャプチャを返します。
matchかstart引数が範囲外の場合、エラーを返します。パターンが見つからなかった場合はnomatchを指定していなければエラーを返します。また、ignore_errors=trueを指定した場合、いずれのエラーも返さず、代わりに空の文字列を返します。
Luaパターンの詳細はScribunto patternsとScribunto Unicode string patternsをご参照ください。
例:
{{#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 }}
→ モジュールStringのエラー: Match not found{{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}
→ No numeric characters in string
pos
文字列の中から指定された位置にある文字を返します。 <syntaxhighlight lang="moin">モジュールStringのエラー: String index out of range </syntaxhighlight> もしくは <syntaxhighlight lang="moin">モジュールStringのエラー: String index out of range </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
target | 文字列 | なし | 検索対象の文字列 |
pos | 位置 | なし | 返す文字の位置 |
位置には負の数を指定することも可能です。その場合、文字列の後ろから数えます。例えば、「-1」は文字列の最後の文字です。
posが0または文字列の長さより大きい場合、エラーを返します。
例:
{{#invoke:String|pos| abcdefghi | 4 }}
→ c{{#invoke:String|pos|target= abcdefghi |pos= 4 }}
→ d
str_find
この関数は{{Str find}}を実装します。この関数が提供されるのは既存のテンプレートを維持するためであり、新しいコードやテンプレートには推奨されません。新しいコードには代わりにfind関数を使用してください。"source"の文字列の中から"target"のパターンを検索し、その位置を返します。パターンが見つからない場合は-1を返します。
なお、"target"の文字列が空白か指定されていない場合、1を返します。これは一般的とは言えない挙動であり、特別に扱う必要があります。
<syntaxhighlight lang="moin"> -1 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> -1 </syntaxhighlight>
例:
{{#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
find
文字列の中からパターンを検索しその位置を返します。 <syntaxhighlight lang="moin"> 0 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> 0 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
source | 文字列 | なし | 検索対象の文字列 |
target | パターン | なし | 検索する文字列パターン |
start | 検索開始位置 | 1 | 検索を開始する文字の位置 |
plain | プレーンフラグ | true |
|
最初の文字の位置は1としています。文字列・パターンが指定されていなかったり、もしくは文字列の中にパターンがなかった場合は、0を返します。この関数はUTF-8の文字列にも使えます。
例:
{{#invoke:String|find| abc123def }}
→ 0{{#invoke:String|find|source= abc123def }}
→ 0{{#invoke:String|find| abc123def |123}}
→ 5{{#invoke:String|find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|find| abc123def |%d|3|false}}
→ 5{{#invoke:String|find|source= abc123def |target= %d |start= 3 |plain= false }}
→ 4
replace
パターンと一致する部分を別の文字列で置き換えます。 <syntaxhighlight lang="moin"> 文字列 </syntaxhighlight> もしくは <syntaxhighlight lang="moin"> 文字列 </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
source | 文字列 | なし | 対象の文字列 |
pattern | パターン | なし | 置換される文字列パターン |
replace | 置換文字列 | なし | 置換する文字列 何も指定しないとパターンを削除する(既定) |
count | 置換回数 | なし | 置換する回数 何も指定しないと可能な箇所すべてを置換する(既定) |
plain | プレーンフラグ | true |
|
例:
"{{#invoke:String|replace| abc123def456 |123|N}}"
→ " abcNdef456 ""{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= N }}"
→ "abcNdef456""{{#invoke:String|replace| abc123def456 |%d+|N|1|false}}"
→ " abcNdef456 ""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |count=1 |plain= false }}"
→ "abcNdef456""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |plain= false }}"
→ "abcNdefN"
rep
Luaのstring.repをテンプレートにも使えるようにするための関数であり、文字列を指定回数返します。 <syntaxhighlight lang="moin">モジュールStringのエラー: function rep expects a number as second parameter, received "繰り返し回数" </syntaxhighlight>
引数 | 内容 | 既定値 | 説明 |
---|---|---|---|
source | 文字列 | なし | 対象の文字列 |
count | 繰り返し回数 | なし | 対象の文字列を繰り返す回数 |
例:
"{{#invoke:String|rep|hello|3}}"
→ "hellohellohello""{{#invoke:String|rep| hello | 3 }}"
→ " hello hello hello "
関連項目
- モジュール:String2 - ほかの文字列処理用関数
- モジュール:StringFunc
- モジュール:Str endswith
- モジュール:Ustring
- mw:Extension:Scribunto/Lua reference manual#Ustring library - 使用しているメタ関数
- mw:Extension:Scribunto/Lua_reference_manual#Patterns - Luaパターン
- mw:Extension:Scribunto/Lua_reference_manual#Ustring_patterns - UTF-8関連の正規表現