<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.fetbuk.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AString2</id>
	<title>Модуль:String2 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fetbuk.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AString2"/>
	<link rel="alternate" type="text/html" href="https://wiki.fetbuk.ru/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String2&amp;action=history"/>
	<updated>2026-05-06T13:26:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.fetbuk.ru/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String2&amp;diff=1244&amp;oldid=prev</id>
		<title>Lanmikeman: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://wiki.fetbuk.ru/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String2&amp;diff=1244&amp;oldid=prev"/>
		<updated>2022-03-09T19:55:42Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 19:55, 9 марта 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Lanmikeman</name></author>
	</entry>
	<entry>
		<id>https://wiki.fetbuk.ru/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String2&amp;diff=1243&amp;oldid=prev</id>
		<title>https://ru.wikipedia.org/wiki/&gt;Serhio Magpie: + ucfirst</title>
		<link rel="alternate" type="text/html" href="https://wiki.fetbuk.ru/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:String2&amp;diff=1243&amp;oldid=prev"/>
		<updated>2020-02-07T22:56:05Z</updated>

		<summary type="html">&lt;p&gt;+ ucfirst&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
    Кое-какие дополнительные функции для строк&lt;br /&gt;
]]&lt;br /&gt;
local M = {&lt;br /&gt;
    bs=function(f)-- первый параметр до начала второго параметра (или до конца, если он не встретился)&lt;br /&gt;
        --необяз. 3-й параметр - с какого по номеру (с 1) символа начинать поиск.&lt;br /&gt;
        return mw.ustring.sub(f.args[1], 1, (mw.ustring.find(f.args[1],f.args[2],tonumber(f.args[3] or 1),true) or 0)-1)&lt;br /&gt;
    end;&lt;br /&gt;
    as=function(f)-- первый параметр после начала второго параметра&lt;br /&gt;
        return mw.ustring.sub(f.args[1], (mw.ustring.find(f.args[1],f.args[2],1,true) or 0)+1)&lt;br /&gt;
    end;&lt;br /&gt;
    Tr=function(s,f,t,cf,df,sf)-- транслитерация первого параметра путём замены символов из второго параметра символами из третьего.&lt;br /&gt;
    -- Отдельными параметрами можно передавать флаги c, d и s, как в Perl; диапазоны в замене не работают, только в левой части&lt;br /&gt;
    -- (т.е. дефис надо передавать первым или последним). Второй результат - число заменённых символов&lt;br /&gt;
        local r, l, l2 = {}, mw.ustring.len(f), mw.ustring.len(t);&lt;br /&gt;
        for i = 1, l do&lt;br /&gt;
            r[mw.ustring.sub(f,i,i)] = i&amp;lt;=l2 and mw.ustring.sub(t,i,i) or df and &amp;#039;&amp;#039; or mw.ustring.sub(t,l2,l2)&lt;br /&gt;
        end&lt;br /&gt;
        local n2=0;&lt;br /&gt;
        local res, n = mw.ustring.gsub(&lt;br /&gt;
            s,&lt;br /&gt;
            (&amp;#039;[%s%s]%s&amp;#039;):format(&lt;br /&gt;
                cf and &amp;#039;^&amp;#039; or &amp;#039;&amp;#039;,&lt;br /&gt;
                f:gsub(&amp;#039;%&amp;#039;,&amp;#039;%%&amp;#039;):gsub(&amp;#039;]&amp;#039;,&amp;#039;%]&amp;#039;):gsub(&amp;#039;^%^&amp;#039;,&amp;#039;%^&amp;#039;),&lt;br /&gt;
                sf and &amp;#039;+&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
            ),&lt;br /&gt;
            sf and function(cc)&lt;br /&gt;
                n2 = n2+mw.ustring.len(cc)-1;&lt;br /&gt;
                return mw.ustring.gsub(cc,&amp;#039;.&amp;#039;,r)&lt;br /&gt;
            end or r&lt;br /&gt;
        )&lt;br /&gt;
        return res, n+n2&lt;br /&gt;
    end;&lt;br /&gt;
   -- tr = function(f) return (M.Tr(f.args[1],f.args[2],f.args[3],f.args[&amp;#039;c&amp;#039;],f.args[&amp;#039;d&amp;#039;],f.args[&amp;#039;s&amp;#039;])) end;-- транслитерировать&lt;br /&gt;
   -- trс = function(f) return ({M.Tr(f.args[1],f.args[2],f.args[3],f.args[&amp;#039;c&amp;#039;],f.args[&amp;#039;d&amp;#039;],f.args[&amp;#039;s&amp;#039;])})[2] end;-- посчитать символы&lt;br /&gt;
    Trg = function(s,t,f,fi)-- Производит замену строк произвольной длины (если с fi, регистр не учитывает).&lt;br /&gt;
    -- Приоритет - по порядку в таблицах.&lt;br /&gt;
        for n,p in ipairs(t) do&lt;br /&gt;
            t[n] = {fi and mw.ustring.upper(p) or p,mw.ustring.len(p)}&lt;br /&gt;
        end&lt;br /&gt;
        local r,i,l,N = {},1,mw.ustring.len(s),0&lt;br /&gt;
        while i&amp;lt;=l do&lt;br /&gt;
            (function()&lt;br /&gt;
                for n,p in ipairs(t) do&lt;br /&gt;
                    if ( fi and mw.ustring.upper(mw.ustring.sub(s,i,i+p[2]-1)) or mw.ustring.sub(s,i,i+p[2]-1) ) == p[1] then&lt;br /&gt;
                        table.insert(r,f[n]);&lt;br /&gt;
                        i = i+p[2]; N=N+1;&lt;br /&gt;
                        return&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                table.insert(r,mw.ustring.sub(s,i,i));&lt;br /&gt;
                i=i+1;&lt;br /&gt;
                return&lt;br /&gt;
            end)()&lt;br /&gt;
        end&lt;br /&gt;
        return table.concat(r),N&lt;br /&gt;
    end;&lt;br /&gt;
    trg = function(frame)--Работает с номерными аргументами шаблона,если задан параметр u, иначе со своими.&lt;br /&gt;
        --  Заменяет в первом аргументе аргументы 2, 4, 6... на аргументы 3, 5, 7...&lt;br /&gt;
        local tf, t, f, i= frame.args[&amp;#039;u&amp;#039;] and frame.getParent() or f, {}, {}, 1;&lt;br /&gt;
        while tf.args[2*i] do t[tf.args[2*i]]=tf.args[2*i+1] or &amp;#039;&amp;#039; end&lt;br /&gt;
        return ( M.Trg(tf.args[1],t,f,(frame.args[&amp;#039;i&amp;#039;] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039;) )&lt;br /&gt;
    end;&lt;br /&gt;
    join = function (f) --объединяет нумерованные аргументы вызвавшего шаблона&lt;br /&gt;
    -- от from или 1 до to или первого отсутствующего&lt;br /&gt;
    -- через первый параметр invoke. Последний элемент можно присоединять иначе, задав второй параметр.&lt;br /&gt;
    -- По умолчанию &amp;#039;,&amp;#039; &amp;amp; &amp;#039;и&amp;#039;&lt;br /&gt;
    -- Если 3-й параметр invoke — &amp;quot;s&amp;quot;, строки из пробелов игнорируются; если &amp;quot;_&amp;quot;, игнорируются пустые строки&lt;br /&gt;
    	local t, tf, i = {}, f:getParent(), tonumber(f.args.from) or 1&lt;br /&gt;
    	local k,j,m = tonumber(f.args.to),i,f.args[3]&lt;br /&gt;
    	while k and i&amp;lt;=k or tf.args[i] do&lt;br /&gt;
    		if (&lt;br /&gt;
    			({&lt;br /&gt;
    				[&amp;#039;_&amp;#039;]=function(s)return s~=&amp;#039;&amp;#039;end;&lt;br /&gt;
    				[&amp;#039;s&amp;#039;]=function(s)return not tostring(s):match(&amp;quot;^%s*$&amp;quot;)end&lt;br /&gt;
    			})[m] or function() return true end&lt;br /&gt;
    		)(tf.args[i]) then&lt;br /&gt;
    			t[j]=tf.args[i];&lt;br /&gt;
    			j=j+1&lt;br /&gt;
    		end;&lt;br /&gt;
    		i=i+1&lt;br /&gt;
    	end&lt;br /&gt;
    	return mw.text.listToText(t,f.args[1],f.args[2] or f.args[1])&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function M.formatRound(frame) --форматирует число, чтобы оно имело order знаков после запятой&lt;br /&gt;
 		&lt;br /&gt;
	return string.format(&amp;quot;%0.&amp;quot;..frame.args[2]..&amp;quot;f&amp;quot;,tonumber(frame.args[1]));&lt;br /&gt;
 	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- если строка s содержит число, увеличивает первое такое число на n, иначе возращает пустую строку.&lt;br /&gt;
-- если число начинается на 0, то увеличенное число будет содержать по крайне мере столько цифр сколько исходное.&lt;br /&gt;
function M.increase(s, n) &lt;br /&gt;
    local a,b,c = string.match(s, &amp;quot;([^0-9]*)([0-9]+)(.*)&amp;quot;)&lt;br /&gt;
    if b==nil then return s end&lt;br /&gt;
    local num = tonumber(b) + n&lt;br /&gt;
    if b:sub(1,1)==&amp;#039;0&amp;#039; &lt;br /&gt;
    	then b = string.format(&amp;quot;%0&amp;quot;..b:len()..&amp;quot;d&amp;quot;, num)&lt;br /&gt;
		else b=num&lt;br /&gt;
	end&lt;br /&gt;
    return a .. b .. c&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function M.ucfirst(frame )&lt;br /&gt;
	local s =  mw.text.trim( frame.args[1] or &amp;quot;&amp;quot; )&lt;br /&gt;
	local s1 = &amp;quot;&amp;quot;&lt;br /&gt;
	-- if it&amp;#039;s a list chop off and (store as s1) everything up to the first &amp;lt;li&amp;gt;&lt;br /&gt;
	local lipos = string.find(s, &amp;quot;&amp;lt;li&amp;gt;&amp;quot; )&lt;br /&gt;
	if lipos then&lt;br /&gt;
		s1 = string.sub(s, 1, lipos + 3)&lt;br /&gt;
		s = string.sub(s, lipos + 4)&lt;br /&gt;
	end&lt;br /&gt;
	-- s1 is either &amp;quot;&amp;quot; or the first part of the list markup, so we can continue&lt;br /&gt;
	-- and prepend s1 to the returned string&lt;br /&gt;
	local letterpos&lt;br /&gt;
	if string.find(s, &amp;quot;^%[%[[^|]+|[^%]]+%]%]&amp;quot;) then&lt;br /&gt;
		-- this is a piped wikilink, so we capitalise the text, not the pipe&lt;br /&gt;
		local _&lt;br /&gt;
		_, letterpos = string.find(s, &amp;quot;|%A*%a&amp;quot;) -- find the first letter after the pipe&lt;br /&gt;
	else&lt;br /&gt;
		letterpos = string.find(s, &amp;#039;%a&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if letterpos then&lt;br /&gt;
		local first = string.sub(s, 1, letterpos - 1)&lt;br /&gt;
		local letter = string.sub(s, letterpos, letterpos)&lt;br /&gt;
		local rest = string.sub(s, letterpos + 1)&lt;br /&gt;
		return s1 .. first .. string.upper(letter) .. rest&lt;br /&gt;
	else&lt;br /&gt;
		return s1 .. s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return M&lt;/div&gt;</summary>
		<author><name>https://ru.wikipedia.org/wiki/&gt;Serhio Magpie</name></author>
	</entry>
</feed>