Обговорення модуля:String: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Найсвіжіший коментар: Sasha1024 3 роки тому
Перейти до навігації Перейти до пошуку
Вилучено вміст Додано вміст
Немає опису редагування
Мітка: редагування коду 2017
мНемає опису редагування
Мітка: редагування коду 2017
Рядок 27: Рядок 27:
for i = 1, limit do
for i = 1, limit do
delimiterStart, delimiterEnd = string.find(source, delimiter, delimiterEnd + 1, true)
delimiterStart, delimiterEnd = string.find(source, delimiter, delimiterEnd + 1, true)
if delimiterStart == nil then delimiterStart, delimiterEnd = #source + 1, #source end
if not delimiterStart then delimiterStart, delimiterEnd = #source + 1, #source end
end
end
end
end

Версія за 17:42, 29 жовтня 2020

Andriy.v, Ви можете, будь ласка, або додати цю функцію:

--[[
explode

Should act as described in https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##explode
Usage:
{{#invoke:String|explode|string|delimiter|position|limit}}
]]
function str.explode(frame)
	local source = frame.args.string or frame.args[1]
	if not source then error('The "string" parameter is not specified') end
	local delimiter = frame.args.delimiter or frame.args[2]
	if not delimiter then error('The "delimiter" parameter is not specified') end
	local position = frame.args.position or frame.args[3] or 0
	local limit = frame.args.limit or frame.args[4] or 1
	
	local startIndex = 1
	for i = 1, position do
		local delimiterEnd = select(2, string.find(source, delimiter, startIndex, true))
		startIndex = (delimiterEnd or #source) + 1
	end

	local delimiterStart = startIndex
	do
		local delimiterEnd = delimiterStart - 1
		for i = 1, limit do
			delimiterStart, delimiterEnd = string.find(source, delimiter, delimiterEnd + 1, true)
			if not delimiterStart then delimiterStart, delimiterEnd = #source + 1, #source end
		end
	end
	
	return string.sub(source, startIndex, delimiterStart - 1)
end

або увімкнути $wgPFEnableStringFunctions? Sasha1024 (обговорення) 17:38, 29 жовтня 2020 (UTC)Відповісти