<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.helmstedt-wiki.de/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://www.helmstedt-wiki.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AStr"/>
	<link rel="alternate" type="text/html" href="https://www.helmstedt-wiki.de/index.php?title=Modul:Str&amp;action=history"/>
	<updated>2026-04-05T22:27:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Helmstedt-Wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.helmstedt-wiki.de/index.php?title=Modul:Str&amp;diff=22491&amp;oldid=prev</id>
		<title>Admin: AZ: Die Seite wurde neu angelegt: function escape_lua_regex(str) 	return mw.ustring.gsub(str, &quot;.&quot;, { 	    [&quot;%&quot;] = &quot;%%&quot;; 	    [&quot;^&quot;] = &quot;%^&quot;; 	    [&quot;$&quot;] = &quot;%$&quot;; 	    [&quot;.&quot;] = &quot;%.&quot;; 	    [&quot;(&quot;] = &quot;%(&quot;; 	    [&quot;)&quot;] = &quot;%)&quot;; 	    [&quot;[&quot;] = &quot;%[&quot;; 	    [&quot;]&quot;] = &quot;%]&quot;; 	    [&quot;?&quot;] = &quot;%?&quot;; 	    [&quot;*&quot;] = &quot;%*&quot;; 	    [&quot;+&quot;] = &quot;%+&quot;; 	    [&quot;-&quot;] = &quot;%-&quot;; 	    [&quot;\0&quot;] = &quot;%z&quot;;   	}) end  local function trim(s) 	s = mw.ustring.gsub(s,&quot;\n&quot;,&quot;&quot;); 	while mw.ustring.su…</title>
		<link rel="alternate" type="text/html" href="https://www.helmstedt-wiki.de/index.php?title=Modul:Str&amp;diff=22491&amp;oldid=prev"/>
		<updated>2024-05-23T08:51:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=Hilfe:Zusammenfassung_und_Quellen&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Hilfe:Zusammenfassung und Quellen (Seite nicht vorhanden)&quot;&gt;AZ&lt;/a&gt;: Die Seite wurde neu angelegt: function escape_lua_regex(str) 	return mw.ustring.gsub(str, &amp;quot;.&amp;quot;, { 	    [&amp;quot;%&amp;quot;] = &amp;quot;%%&amp;quot;; 	    [&amp;quot;^&amp;quot;] = &amp;quot;%^&amp;quot;; 	    [&amp;quot;$&amp;quot;] = &amp;quot;%$&amp;quot;; 	    [&amp;quot;.&amp;quot;] = &amp;quot;%.&amp;quot;; 	    [&amp;quot;(&amp;quot;] = &amp;quot;%(&amp;quot;; 	    [&amp;quot;)&amp;quot;] = &amp;quot;%)&amp;quot;; 	    [&amp;quot;[&amp;quot;] = &amp;quot;%[&amp;quot;; 	    [&amp;quot;]&amp;quot;] = &amp;quot;%]&amp;quot;; 	    [&amp;quot;?&amp;quot;] = &amp;quot;%?&amp;quot;; 	    [&amp;quot;*&amp;quot;] = &amp;quot;%*&amp;quot;; 	    [&amp;quot;+&amp;quot;] = &amp;quot;%+&amp;quot;; 	    [&amp;quot;-&amp;quot;] = &amp;quot;%-&amp;quot;; 	    [&amp;quot;\0&amp;quot;] = &amp;quot;%z&amp;quot;;   	}) end  local function trim(s) 	s = mw.ustring.gsub(s,&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;); 	while mw.ustring.su…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&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;
local function trim(s)&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
	while mw.ustring.sub(s,1,1) == &amp;quot; &amp;quot; do&lt;br /&gt;
		s=  mw.ustring.sub(s,2,-1);&lt;br /&gt;
	end&lt;br /&gt;
	while mw.ustring.sub(s,-1,-1) == &amp;quot; &amp;quot; do&lt;br /&gt;
		s=  mw.ustring.sub(s,1,-2);&lt;br /&gt;
	end&lt;br /&gt;
	return s;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local Str = {} &lt;br /&gt;
	function Str.len(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		return mw.ustring.len(s);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Str.left(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local idx = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		if idx &amp;lt; 1 then&lt;br /&gt;
			return &amp;quot;&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.ustring.sub(s,1,idx);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Str.right(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local length = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		if length &amp;lt; 1 then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			length = -length;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.ustring.sub(s,length,-1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Str.index(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local idx = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		if idx &amp;lt; 1 then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.ustring.sub(s,idx,idx)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Str.sub(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local von = tonumber(frame.args[2]) or 1;&lt;br /&gt;
		local length = tonumber(frame.args[3]) or 0;&lt;br /&gt;
		if (von &amp;lt; 1) then&lt;br /&gt;
			von = 1&lt;br /&gt;
		end&lt;br /&gt;
		local bis = von + length - 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(s,von,bis)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Str.crop(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local cut = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		local length =  mw.ustring.len(s)&lt;br /&gt;
		if cut &amp;lt; 1 then&lt;br /&gt;
			return s;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.ustring.sub(s,1,length - cut)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function Str.cropleft(frame)&lt;br /&gt;
		local s = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local cut = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		local length =  mw.ustring.len(s)&lt;br /&gt;
		if 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;
		local text = trim((frame.args[1] or &amp;quot;&amp;quot;));&lt;br /&gt;
		local pat = frame.args[2] or &amp;quot;&amp;quot;;&lt;br /&gt;
		if pat == &amp;quot;&amp;quot; then&lt;br /&gt;
			return 1&lt;br /&gt;
		end&lt;br /&gt;
		local idx = mw.ustring.find(text,pat,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) or 0;&lt;br /&gt;
		return a&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;
		-- 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 Str.rep(frame)&lt;br /&gt;
		local repetitions = tonumber(frame.args[2]) or 0;&lt;br /&gt;
		return mw.ustring.rep( frame.args[1] or &amp;#039;&amp;#039;, repetitions );&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;
		local replace = frame.args[3] or &amp;quot;&amp;quot;;   -- Ersetzungstext&lt;br /&gt;
		if text == &amp;quot;&amp;quot; or search == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;;&lt;br /&gt;
		end &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;
		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;
		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;
&lt;br /&gt;
	-- richtet Zahlen numerisch aus&lt;br /&gt;
	function Str.adjustnumber(frame)&lt;br /&gt;
		local ausgabe;&lt;br /&gt;
		local text  = frame.args[1] or &amp;quot;&amp;quot;      -- Text, der bearbeitet werden soll, i.d.R. eine Dezimalzahl&lt;br /&gt;
		local i_li = math.floor(tonumber(frame.args[2])) or 2;     -- maximale Stellen links vom Trennzeichen&lt;br /&gt;
		local i_re = math.floor(tonumber(frame.args[3])) or 2;    -- maximale Stellen rechts vom Trennzeichen&lt;br /&gt;
		local sign  = frame.args[&amp;#039;Z&amp;#039;] or &amp;quot;,&amp;quot;   -- Trennzeichen&lt;br /&gt;
		local zeroes=&amp;#039;00000000000000000000&amp;#039;;   -- 20 duerften ausreichen.&lt;br /&gt;
		local zpos = 0;&lt;br /&gt;
		local len =  mw.ustring.len(text);&lt;br /&gt;
		if not text  or sign == &amp;quot;&amp;quot; then&lt;br /&gt;
			zpos = len + 1;&lt;br /&gt;
		else&lt;br /&gt;
			zpos = mw.ustring.find(text, sign,1, true) or len;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local zl = 0;&lt;br /&gt;
		local zr = 0;&lt;br /&gt;
		local t_li = &amp;quot;&amp;quot;;&lt;br /&gt;
		local t_re = &amp;quot;&amp;quot;;&lt;br /&gt;
		local z_li =&amp;quot;&amp;quot;;&lt;br /&gt;
		local z_re =&amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		if zpos &amp;gt; 1 then &lt;br /&gt;
			t_li = mw.ustring.sub(text,1, zpos-1);&lt;br /&gt;
		else&lt;br /&gt;
			t_li=&amp;quot;&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if len-zpos &amp;gt; 0 then &lt;br /&gt;
			t_re = mw.ustring.sub(text,zpos+1,-1);&lt;br /&gt;
		else&lt;br /&gt;
			t_re=&amp;quot;&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		zl = i_li -  mw.ustring.len(t_li);&lt;br /&gt;
		if zl &amp;lt; 1 then&lt;br /&gt;
			zl = 0;&lt;br /&gt;
			z_li = &amp;quot;&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			z_li = &amp;#039;&amp;lt;span style=&amp;quot;visibility:hidden;&amp;quot;&amp;gt;&amp;#039; .. mw.ustring.sub(zeroes,1,zl) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		zr = i_re -  mw.ustring.len(t_re);&lt;br /&gt;
		if zr &amp;lt; 1 then&lt;br /&gt;
			zr = 0;&lt;br /&gt;
			z_re =&amp;quot;&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			z_re =&amp;#039;&amp;lt;span style=&amp;quot;visibility:hidden;&amp;quot;&amp;gt;&amp;#039; ..  mw.ustring.sub(zeroes,1,zr) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
		end&lt;br /&gt;
		ausgabe = z_li .. t_li  .. sign .. t_re .. z_re;&lt;br /&gt;
		return ausgabe;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Konvertierung von Mathe-Minus, Geviert-, Halbgeviert- und Viertelgeviertstrich, sowie U+2012 ins ASCII-Minus.&lt;br /&gt;
function Str.minus(frame)&lt;br /&gt;
	local s = frame.args[1] or &amp;quot;&amp;quot;;&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;#039;−&amp;#039;,&amp;#039;-&amp;#039;); -- Erstes Zeichen ist U+2212 (Mathe-Minus)&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;#039;‐&amp;#039;,&amp;#039;-&amp;#039;); -- Erstes Zeichen ist U+2010 (Viertelgeviertstrich)!&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;#039;‒&amp;#039;,&amp;#039;-&amp;#039;); -- Erstes Zeichen ist U+2012 (Figure dash)!&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;#039;–&amp;#039;,&amp;#039;-&amp;#039;); -- Erstes Zeichen ist U+2013 (Halbgeviertstrich)!&lt;br /&gt;
	s = mw.ustring.gsub(s,&amp;#039;—&amp;#039;,&amp;#039;-&amp;#039;); -- Erstes Zeichen ist U+2014 (Geviertstrich)!&lt;br /&gt;
	return s;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Die folgende Stringfunktion rundet Zahlen und gibt im Unterschied zu &lt;br /&gt;
-- &amp;quot;round&amp;quot; im Modul FormatNum auch nachfolgende Nullen aus.&lt;br /&gt;
--  So wird &amp;quot;1.12&amp;quot; bei drei Nachkommastellen als &amp;quot;1.120&amp;quot; zurückgegeben.&lt;br /&gt;
function Str.round(frame)&lt;br /&gt;
	local num  = tonumber(frame.args[1] or &amp;#039;&amp;#039;) or &amp;#039;NaN&amp;#039;; -- zu rundende Zahl&lt;br /&gt;
	local prec = tonumber(frame.args[2] or &amp;#039;&amp;#039;) or &amp;#039;NaN&amp;#039;; -- Dezimalstellen&lt;br /&gt;
	if num == &amp;#039;NaN&amp;#039; or prec ==&amp;#039;NaN&amp;#039; then&lt;br /&gt;
		return &amp;quot;NaN&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
	prec = math.floor(prec);  &lt;br /&gt;
	local out = &amp;quot;&amp;quot;;&lt;br /&gt;
	local rnd = 10;&lt;br /&gt;
	if prec &amp;gt; 0 then&lt;br /&gt;
		local fmt = &amp;quot;%.&amp;quot; .. tostring(prec) .. &amp;quot;f&amp;quot;;&lt;br /&gt;
		out = string.format(fmt,num); -- Zahlen haben nur ASCII-Zeichen&lt;br /&gt;
	else&lt;br /&gt;
		rnd = 10^(-prec);&lt;br /&gt;
		num = math.floor(num/rnd + 0.5) * rnd;&lt;br /&gt;
		out = string.format(&amp;quot;%d&amp;quot;,num); -- Zahlen haben nur ASCII-Zeichen&lt;br /&gt;
	end&lt;br /&gt;
	return out;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Str&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>