Modul:String/Work: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „local p = {} local com = require("Modul:Common") function p.replace(s, old, new, count) local result -- Wenn count angegeben ist, wird string.gsub mit dem limitierten Ersetzungszähler verwendet if count then result = string.gsub(s, old, new, count) else -- Wenn kein count angegeben ist, wird string.gsub alle Vorkommen ersetzen result = string.gsub(s, old, new) end return result end function p.split(s, delimi…“)
 
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 86: Zeile 86:


function p.bracketSplitAndStrip(s)
function p.bracketSplitAndStrip(s)
-- scheidet einen geklammerten String am Anfang und am Ende ab
-- Beispiel: "( a ) b (c)" ergibt "( a )", "b", "(c)"
local s_pre_bracket = ""
local s_pre_bracket = ""
local s_main = ""
local s_post_bracket = ""
local s_post_bracket = ""
 
-- Klammerung am Anfang
s = p.strip(s)
local bracket_open = string.find(s, "%(")
local s_len = string.len(s)
local bracket_close = string.find(s, "%)")
 
if bracket_open == 1 and bracket_close ~= nil then
local first_opening_bracket = string.find(s, "%(")
s_pre_bracket = string.sub(s, bracket_open, bracket_close)
local first_closing_bracket = string.find(s, "%)")
s = p.strip(string.sub(s, bracket_close+1))
local last_opening_bracket = string.find(s, "%([^%(]*$")
local last_closing_bracket = string.find(s, "%)[^%)]*$")
mw.log( "first_opening_bracket=" .. (first_opening_bracket or "nil") ..
" first_closing_bracket=" .. (first_closing_bracket or "nil") ..
" last_opening_bracket=" .. (last_opening_bracket or "nil") ..
" last_closing_bracket=" .. (last_closing_bracket or "nil"))
if first_opening_bracket == nil or first_closing_bracket == nil then -- Klammer-auf/zu-Pärchen nicht vorhanden
s_main = s -- => keine Klammer-Abtrennung
elseif first_opening_bracket == last_opening_bracket then -- nur ein Klammer-auf/zu-Pärchen vorhanden
if first_opening_bracket ~= 1 and first_closing_bracket ~= s_len then -- Klammern mitten im String
s_main = s -- => keine Klammer-Abtrennung
elseif first_opening_bracket == 1 and first_closing_bracket == s_len then -- Klammerung umfasst ganzen String
s_pre_bracket = s -- => Klammer-String ohne Haupt-String
elseif first_opening_bracket == 1 then -- Klammerung vorne
s_pre_bracket = string.sub(s, first_opening_bracket, first_closing_bracket) -- => Klammer-String mit Haupt-String
s_main = p.strip(string.sub(s, first_closing_bracket+1, s_len))
else -- ergo Klammerung hinten
s_post_bracket = string.sub(s, first_opening_bracket, first_closing_bracket) -- => Klammer-String mit Haupt-String
s_main = p.strip(string.sub(s, 1, first_opening_bracket-1))
end
else
end
end
-- else
-- Klammerung am Ende
mw.log( "s_pre_bracket=" .. s_pre_bracket ..
bracket_open = string.find(s, "%([^%(]*$")
" s_main=" .. s_main ..
bracket_close = string.find(s, "%)[^%)]*$")
" s_post_bracket=" .. s_post_bracket)
if bracket_open ~= nil and bracket_close == string.len(s) then
return s_pre_bracket, s_main, s_post_bracket
s_post_bracket = string.sub(s, bracket_open, bracket_close)
s = p.strip(string.sub(s, 1, bracket_open-1))
end
return s_pre_bracket, s, s_post_bracket
end
end


return p
return p