Modul:StringReplace
Udseende
{{Module rating |}}
Dette Lua-modul bruges på ca. 75.100 sider, eller omkring 8% af alle sider. For at undgå store forstyrrelser og unødvendigt pres på serverne, bør alle ændringer af skabelonen først afprøves i dens tilhørende modulets /sandkasse eller /test-undersider, eller i din egen module sandkasse. De færdigafprøvede ændringer kan derefter overføres til denne side ved en enkelt redigering. Du bør også overveje at diskutere ændringer på diskussionssiden før du implementerer dem. |
Utilstrækkelig vejledning Dette modul bør have en (bedre) vejledning, helst med eksempler på anvendelse. Hvis andre moduler er nyere og/eller bedre, bør der henvises til dem. |
Usage
{{#invoke:StringReplace|function_name}}
Kategori mangler Dette modul hører til i en eller flere kategorier. Kategoriser venligst dette modul ved at placere den sammen med lignende emner. Fjern skabelonen efter kategorisering. Bemærk, at kategorier påsat via skabeloner, samt meget generelle kategorier ikke bør betragtes som tilstrækkelige. |
-- 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 occurence of any of ().%+-*?[^$ with a `%` and then the character.
local r = string.gsub(text, "[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
return r
end
-- Returns the first parameter, with all occurences 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