str

Diese Seite enthält Code in der Programmiersprache Lua.

Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

function escape_lua_regex(str) return mw.ustring.gsub(str, ".", {     ["%"] = "%%";     ["^"] = "%^";     ["$"] = "%$";     ["."] = "%.";     ["("] = "%(";     [")"] = "%)";     ["["] = "%[";     ["]"] = "%]";     ["?"] = "%?";     ["*"] = "%*";     ["+"] = "%+";     ["-"] = "%-";     ["\0"] = "%z";   }) end  local function trim(s) s = mw.ustring.gsub(s,"\n",""); while mw.ustring.sub(s,1,1) == " " do s=  mw.ustring.sub(s,2,-1); end while mw.ustring.sub(s,-1,-1) == " " do s=  mw.ustring.sub(s,1,-2); end return s; end  local Str = {}  function Str.len(frame) local s = trim((frame.args[1] or "")); return mw.ustring.len(s); end  function Str.left(frame) local s = trim((frame.args[1] or "")); local idx = tonumber(frame.args[2]) or 0; if idx < 1 then return ""; end return mw.ustring.sub(s,1,idx); end  function Str.right(frame) local s = trim((frame.args[1] or "")); local length = tonumber(frame.args[2]) or 0; if length < 1 then return "" else length = -length; end return mw.ustring.sub(s,length,-1) end  function Str.index(frame) local s = trim((frame.args[1] or "")); local idx = tonumber(frame.args[2]) or 0; if idx < 1 then return "" end return mw.ustring.sub(s,idx,idx) end  function Str.sub(frame) local s = trim((frame.args[1] or "")); local von = tonumber(frame.args[2]) or 1; local length = tonumber(frame.args[3]) or 0; if (von < 1) then von = 1 end local bis = von + length - 1 if (bis < von) then return "" end return mw.ustring.sub(s,von,bis) end  function Str.crop(frame) local s = trim((frame.args[1] or "")); local cut = tonumber(frame.args[2]) or 0; local length =  mw.ustring.len(s) if cut < 1 then return s; end return mw.ustring.sub(s,1,length - cut) end  function Str.cropleft(frame) local s = trim((frame.args[1] or "")); local cut = tonumber(frame.args[2]) or 0; local length =  mw.ustring.len(s) if cut < 1 then return s; end return mw.ustring.sub(s,cut+1,-1); end  function Str.find(frame) local text = trim((frame.args[1] or "")); local pat = frame.args[2] or ""; if pat == "" then return 1 end local idx = mw.ustring.find(text,pat,1,true) if idx then return idx; else return -1; end end  function Str.hex2dez(frame) a = tonumber(frame.args[1],16) or 0; return a end  function Str.match(frame) local text = frame.args[1] or "" local pattern = frame.args[2] or "" local index = tonumber(frame.args[3]) or 0 if (text == "" or pattern == "") then return "" end -- return all captures (denoted by brackets in the pattern) if index is zero, otherwise return only the index-th capture if index <= 0 then return mw.ustring.match(text, pattern) else return ({mw.ustring.match(text, pattern)})[index] end end  function Str.rep(frame) local repetitions = tonumber(frame.args[2]) or 0; return mw.ustring.rep( frame.args[1] or '', repetitions ); end  function Str.replace(frame) local text = frame.args[1] or "";      -- Text, der bearbeitet werden soll local search = frame.args[2] or "";    -- Textstellen innerhalb von "text" die ersetzt werden sollen local replace = frame.args[3] or "";   -- Ersetzungstext if text == "" or search == "" then return ""; end  local count = tonumber(frame.args[4]) -- Anzahl der Ersetzungen (optional) local regexsearch = frame.args[5]     -- beliebiger Wert um dafür zu sorgen, dass der Suchtext "search" als Lua-regulärer Ausdruck behandelt werden soll if not regexsearch or regexsearch == "" then search = escape_lua_regex(search) replace = mw.ustring.gsub(replace, "%%", "%%%%") end local result if count then result,_ = mw.ustring.gsub(text, search, replace, count) else result,_ = mw.ustring.gsub(text, search, replace) end return result end  -- richtet Zahlen numerisch aus function Str.adjustnumber(frame) local ausgabe; local text  = frame.args[1] or ""      -- Text, der bearbeitet werden soll, i.d.R. eine Dezimalzahl local i_li = math.floor(tonumber(frame.args[2])) or 2;     -- maximale Stellen links vom Trennzeichen local i_re = math.floor(tonumber(frame.args[3])) or 2;    -- maximale Stellen rechts vom Trennzeichen local sign  = frame.args['Z'] or ","   -- Trennzeichen local zeroes='00000000000000000000';   -- 20 duerften ausreichen. local zpos = 0; local len =  mw.ustring.len(text); if not text  or sign == "" then zpos = len + 1; else zpos = mw.ustring.find(text, sign,1, true) or len; end  local zl = 0; local zr = 0; local t_li = ""; local t_re = ""; local z_li =""; local z_re ="";  if zpos > 1 then  t_li = mw.ustring.sub(text,1, zpos-1); else t_li=""; end  if len-zpos > 0 then  t_re = mw.ustring.sub(text,zpos+1,-1); else t_re=""; end  zl = i_li -  mw.ustring.len(t_li); if zl < 1 then zl = 0; z_li = ""; else z_li = '' .. mw.ustring.sub(zeroes,1,zl) .. ''; end  zr = i_re -  mw.ustring.len(t_re); if zr < 1 then zr = 0; z_re =""; else z_re ='' ..  mw.ustring.sub(zeroes,1,zr) .. ''; end ausgabe = z_li .. t_li  .. sign .. t_re .. z_re; return ausgabe; end  -- Konvertierung von Mathe-Minus, Geviert-, Halbgeviert- und Viertelgeviertstrich, sowie U+2012 ins ASCII-Minus. function Str.minus(frame) local s = frame.args[1] or ""; s = mw.ustring.gsub(s,'−','-'); -- Erstes Zeichen ist U+2212 (Mathe-Minus) s = mw.ustring.gsub(s,'‐','-'); -- Erstes Zeichen ist U+2010 (Viertelgeviertstrich)! s = mw.ustring.gsub(s,'‒','-'); -- Erstes Zeichen ist U+2012 (Figure dash)! s = mw.ustring.gsub(s,'–','-'); -- Erstes Zeichen ist U+2013 (Halbgeviertstrich)! s = mw.ustring.gsub(s,'—','-'); -- Erstes Zeichen ist U+2014 (Geviertstrich)! return s; end  -- Die folgende Stringfunktion rundet Zahlen und gibt im Unterschied zu  -- "round" im Modul FormatNum auch nachfolgende Nullen aus. --  So wird "1.12" bei drei Nachkommastellen als "1.120" zurückgegeben. function Str.round(frame) local num  = tonumber(frame.args[1] or '') or 'NaN'; -- zu rundende Zahl local prec = tonumber(frame.args[2] or '') or 'NaN'; -- Dezimalstellen if num == 'NaN' or prec =='NaN' then return "NaN"; end prec = math.floor(prec);   local out = ""; local rnd = 10; if prec > 0 then local fmt = "%." .. tostring(prec) .. "f"; out = string.format(fmt,num); -- Zahlen haben nur ASCII-Zeichen else rnd = 10^(-prec); num = math.floor(num/rnd + 0.5) * rnd; out = string.format("%d",num); -- Zahlen haben nur ASCII-Zeichen end return out; end  return Str 

Tags:

🔥 Trending searches on Wiki Deutsch:

Zwei rechnen abOtto von BismarckHMS Beagle (1820)Fußball-Europameisterschaft 2024ThailandTransgenderJan BöhmermannNikola TeslaThe BeatlesCarbonaraMarkus N. BeekoVikarHongkongKloster HöchstFIFA-WeltranglisteNicolas CageBen AffleckErling HaalandBambisJennifer SieglarWolodymyr SelenskyjMichael JordanThistlegormBenjamin PiwkoVW Golf VIILinkin ParkMartin LutherArteIslamJAB HoldingEminemKfz-Kennzeichen (Türkei)MünchenSS-N-22 SunburnEntführung von Natascha KampuschUlrike C. TscharreListe der IPA-ZeichenDer SchwarmGestern waren wir FremdeSchweizKonrad AdenauerLegion (Film)Elisabeth KöstingerDienstgrade der BundeswehrSenecaVaginalverkehrHans Richter (Fußballspieler)Fleetwood MacBertolt BrechtThomas HeinzeTom CruiseLudwig XIV.Vereinte NationenRyan ReynoldsCarsten StahlRheinenergiestadionAlternative für DeutschlandBerliner MauerPawel Wadimowitsch KrotowDie BestechlichenLuciane BuchananJoh. A. Benckiser (Unternehmen)Gilmore GirlsPrätorianerSowjetunionAngelika KirchschlagerManson FamilyScottish National PartyKroatienManta, MantaWärmepumpeFiguren aus Star WarsLeopard 1Belgische FußballnationalmannschaftTim BendzkoMao Zedong🡆 More