<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://odysseetheater.at/index.php?action=history&amp;feed=atom&amp;title=Modul%3AStr</id>
	<title>Modul:Str - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://odysseetheater.at/index.php?action=history&amp;feed=atom&amp;title=Modul%3AStr"/>
	<link rel="alternate" type="text/html" href="https://odysseetheater.at/index.php?title=Modul:Str&amp;action=history"/>
	<updated>2026-04-12T21:53:48Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Odysseetheater</subtitle>
	<generator>MediaWiki 1.40.2</generator>
	<entry>
		<id>https://odysseetheater.at/index.php?title=Modul:Str&amp;diff=59&amp;oldid=prev</id>
		<title>Odyssee: Die Seite wurde neu angelegt: „  local Str = {}       function Str.len(frame)       return mw.ustring.len(frame.args[1])     end      function Str.left(frame)       local idx = tonumber(frame.args[2])       if (not idx) or idx &lt; 1 then         return &quot;&quot;       end       return mw.ustring.sub(frame.args[1],1,idx)     end      function Str.right(frame)       local laenge = tonumber(frame.args[2])       if (not laenge) or laenge &lt; 1 then         return &quot;&quot;       else       laenge = - laenge…“</title>
		<link rel="alternate" type="text/html" href="https://odysseetheater.at/index.php?title=Modul:Str&amp;diff=59&amp;oldid=prev"/>
		<updated>2023-07-07T08:55:41Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „  local Str = {}       function Str.len(frame)       return mw.ustring.len(frame.args[1])     end      function Str.left(frame)       local idx = tonumber(frame.args[2])       if (not idx) or idx &amp;lt; 1 then         return &amp;quot;&amp;quot;       end       return mw.ustring.sub(frame.args[1],1,idx)     end      function Str.right(frame)       local laenge = tonumber(frame.args[2])       if (not laenge) or laenge &amp;lt; 1 then         return &amp;quot;&amp;quot;       else       laenge = - laenge…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;  local Str = {} &lt;br /&gt;
&lt;br /&gt;
    function Str.len(frame)&lt;br /&gt;
      return mw.ustring.len(frame.args[1])&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.left(frame)&lt;br /&gt;
      local idx = tonumber(frame.args[2])&lt;br /&gt;
      if (not idx) or idx &amp;lt; 1 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(frame.args[1],1,idx)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.right(frame)&lt;br /&gt;
      local laenge = tonumber(frame.args[2])&lt;br /&gt;
      if (not laenge) or laenge &amp;lt; 1 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
      laenge = - laenge&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(frame.args[1],laenge,-1)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.index(frame)&lt;br /&gt;
      local idx = tonumber(frame.args[2])&lt;br /&gt;
      if (not idx) or idx &amp;lt; 1 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(frame.args[1],idx,idx)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.sub(frame)&lt;br /&gt;
      local von = tonumber(frame.args[2])&lt;br /&gt;
      local laenge = tonumber(frame.args[3])&lt;br /&gt;
      if (not von) or (not laenge) then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      if (von &amp;lt; 1) then&lt;br /&gt;
        von = 1&lt;br /&gt;
      end      &lt;br /&gt;
      local bis = von + laenge - 1&lt;br /&gt;
      if (bis &amp;lt; von) then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(frame.args[1],von,bis)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.crop(frame)&lt;br /&gt;
      local s = frame.args[1]&lt;br /&gt;
      local cut = tonumber(frame.args[2])&lt;br /&gt;
      local laenge =  mw.ustring.len(s)&lt;br /&gt;
      if (not cut) or (cut &amp;lt; 1) then&lt;br /&gt;
        return s&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(s,1,laenge - cut)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.cropleft(frame)&lt;br /&gt;
      local s = frame.args[1]&lt;br /&gt;
      local cut = tonumber(frame.args[2])&lt;br /&gt;
      local laenge =  mw.ustring.len(s)&lt;br /&gt;
      if (not cut) or (cut &amp;lt; 1) then&lt;br /&gt;
        return s&lt;br /&gt;
      end&lt;br /&gt;
      return mw.ustring.sub(s,cut+1,-1)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.find(frame)&lt;br /&gt;
      if not frame.args[2] or frame.args[2] == &amp;quot;&amp;quot; then&lt;br /&gt;
        return 1&lt;br /&gt;
      end&lt;br /&gt;
      local  idx = mw.ustring.find(frame.args[1], frame.args[2],1, true)&lt;br /&gt;
      if idx then&lt;br /&gt;
          return idx&lt;br /&gt;
      else&lt;br /&gt;
          return -1&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.hex2dez(frame)&lt;br /&gt;
      a = tonumber(frame.args[1],16)&lt;br /&gt;
      if a then&lt;br /&gt;
        return a&lt;br /&gt;
      else&lt;br /&gt;
        return 0&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    function Str.match(frame)&lt;br /&gt;
        local text = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
        local pattern = frame.args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
        local index = tonumber(frame.args[3]) or 0&lt;br /&gt;
        if (text == &amp;quot;&amp;quot; or pattern == &amp;quot;&amp;quot;) then return &amp;quot;&amp;quot; end&lt;br /&gt;
 &lt;br /&gt;
        -- return all captures (denoted by brackets in the pattern) if index is zero, otherwise return only the index-th capture&lt;br /&gt;
        if index &amp;lt;= 0 then&lt;br /&gt;
            return mw.ustring.match(text, pattern)&lt;br /&gt;
        else&lt;br /&gt;
            return ({mw.ustring.match(text, pattern)})[index]&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
function escape_lua_regex(str)&lt;br /&gt;
	return mw.ustring.gsub(str, &amp;quot;.&amp;quot;, {&lt;br /&gt;
	    [&amp;quot;%&amp;quot;] = &amp;quot;%%&amp;quot;;&lt;br /&gt;
	    [&amp;quot;^&amp;quot;] = &amp;quot;%^&amp;quot;;&lt;br /&gt;
	    [&amp;quot;$&amp;quot;] = &amp;quot;%$&amp;quot;;&lt;br /&gt;
	    [&amp;quot;.&amp;quot;] = &amp;quot;%.&amp;quot;;&lt;br /&gt;
	    [&amp;quot;(&amp;quot;] = &amp;quot;%(&amp;quot;;&lt;br /&gt;
	    [&amp;quot;)&amp;quot;] = &amp;quot;%)&amp;quot;;&lt;br /&gt;
	    [&amp;quot;[&amp;quot;] = &amp;quot;%[&amp;quot;;&lt;br /&gt;
	    [&amp;quot;]&amp;quot;] = &amp;quot;%]&amp;quot;;&lt;br /&gt;
	    [&amp;quot;?&amp;quot;] = &amp;quot;%?&amp;quot;;&lt;br /&gt;
	    [&amp;quot;*&amp;quot;] = &amp;quot;%*&amp;quot;;&lt;br /&gt;
	    [&amp;quot;+&amp;quot;] = &amp;quot;%+&amp;quot;;&lt;br /&gt;
	    [&amp;quot;-&amp;quot;] = &amp;quot;%-&amp;quot;;&lt;br /&gt;
	    [&amp;quot;\0&amp;quot;] = &amp;quot;%z&amp;quot;;&lt;br /&gt;
  	})&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function Str.replace(frame)	&lt;br /&gt;
	local text = frame.args[1] or &amp;quot;&amp;quot;      -- Text, der bearbeitet werden soll&lt;br /&gt;
	local search = frame.args[2] or &amp;quot;&amp;quot;    -- Textstellen innerhalb von &amp;quot;text&amp;quot; die ersetzt werden sollen&lt;br /&gt;
	if text == &amp;quot;&amp;quot; or search == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end &lt;br /&gt;
 &lt;br /&gt;
	local replace = frame.args[3] or &amp;quot;&amp;quot;   -- Ersetzungstext&lt;br /&gt;
	local count = tonumber(frame.args[4]) -- Anzahl der Ersetzungen (optional)&lt;br /&gt;
	local regexsearch = frame.args[5]     -- beliebiger Wert um dafür zu sorgen, dass der Suchtext &amp;quot;search&amp;quot; als Lua-regulärer Ausdruck behandelt werden soll&lt;br /&gt;
 &lt;br /&gt;
	if not regexsearch or regexsearch == &amp;quot;&amp;quot; then&lt;br /&gt;
		search = escape_lua_regex(search)&lt;br /&gt;
		replace = mw.ustring.gsub(replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	local result&lt;br /&gt;
	if count then&lt;br /&gt;
		result,_ = mw.ustring.gsub(text, search, replace, count)&lt;br /&gt;
	else&lt;br /&gt;
		result,_ = mw.ustring.gsub(text, search, replace)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
 return Str&lt;/div&gt;</summary>
		<author><name>Odyssee</name></author>
	</entry>
</feed>