Module:StringReplace
Jump to navigation
Jump to search
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
Usage
{{#invoke:StringReplace|function_name}}
The above documentation is transcluded from Module:StringReplace/doc. (edit | history) Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages. Subpages of this module. |
-- Module for different search and replace operations on strings.
local p = {}
-- Takes one string parameter, and returns the string with all characters with special meaning for Lua patterns escaped with a preceding `%`.
function p.escape_pattern(text)
-- Replaces each occurrence of any of ().%+-*?[^$ with a `%` and then the character.
local r = string.gsub(text, "[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
return r
end
-- Returns the first parameter, with all occurrences of the second parameter replaced with the third parameter.
-- All special characters are ignored: {{#invoke:StringReplace|replace_all|test.a%1$foo|%1|bar}} results in `test.abarfoo`.
function p.replace_all(frame)
local str = frame.args[1]
local strToFind = frame.args[2]
local strToreplaceWith = frame.args[3]
local r = string.gsub(str, p.escape_pattern(strToFind), p.escape_pattern(strToreplaceWith))
return r
end
p['encode wiki page name'] = function( frame )
local x = mw.ustring.gsub(
frame.args[1] or '',
'[\'"&_]',
{
["'"] = ''',
['"'] = '"',
['&'] = '&',
['_'] = ' ',
}
)
return mw.text.trim( x )
end
return p