Modul:String: Unterschied zwischen den Versionen

Aus FürthWiki

Keine Bearbeitungszusammenfassung
(+ list())
Zeile 1: Zeile 1:
local p = {}
local p = {}
local c = require("Module:Common")


function p.replace(s, old, new, count)
function p.replace(s, old, new, count)
Zeile 14: Zeile 15:


function p.split(s, delimiter)
function p.split(s, delimiter)
-- splits string s into pieces with delimiter and returns table
-- it's the counterpart of list()
delimiter = delimiter or " "
delimiter = delimiter or " "
     local result = {}
     local result = {}
Zeile 26: Zeile 29:
     table.insert(result, string.sub(s, start))
     table.insert(result, string.sub(s, start))
--[[Debugging only
-- mw.logObject(result) -- Debugging only
for _, value in ipairs(result) do
    mw.log(value) -- oder print(value), wenn du es direkt in der Konsole sehen möchtest
end]]
     return result
     return result
end
function p.list(table, delimiter)
-- converts a table into a list with delimiters
-- the indexes/keys gonna lost and the list may be unsorted
-- it's the counterpart of split()
local list = ""
if not c.isEmpty(table) then
if type(table) == "table" then
delimiter = delimiter or " "
for _, v in pairs(table) do
if #list ~= 0 then
list = list .. delimiter
end
  list = list .. v
end
else
list = table
end
end
-- mw.log(list) -- Debugging only
return list
end
end



Version vom 23. September 2025, 12:52 Uhr

Unterseiten

Siehe auch


local p = {}
local c = require("Module:Common")

function p.replace(s, old, new, count)
    local result
    -- Wenn count angegeben ist, wird string.gsub mit dem limitierten Ersetzungszähler verwendet
    if count then
    	result = string.gsub(s, old, new, count)
    else
        -- Wenn kein count angegeben ist, wird string.gsub alle Vorkommen ersetzen
        result = string.gsub(s, old, new)
    end
    return result
end

function p.split(s, delimiter)
	-- splits string s into pieces with delimiter and returns table
	-- it's the counterpart of list()
	delimiter = delimiter or " "
    local result = {}
    local start = 1
    local delim_start, delim_end = string.find(s, delimiter, start, true)  -- true = plain find (keine Patterns)

    while delim_start do
        table.insert(result, string.sub(s, start, delim_start - 1))
        start = delim_end + 1
        delim_start, delim_end = string.find(s, delimiter, start, true)
    end
    table.insert(result, string.sub(s, start))
	
	-- mw.logObject(result) -- Debugging only
    return result
end

function p.list(table, delimiter)
	-- converts a table into a list with delimiters
	-- the indexes/keys gonna lost and the list may be unsorted
	-- it's the counterpart of split()
	local list = ""
	if not c.isEmpty(table) then
		if type(table) == "table" then
			delimiter = delimiter or " "
			for _, v in pairs(table) do
				if #list ~= 0 then
					list = list .. delimiter
				end
   				list = list .. v
			end
		else
			list = table
		end
	end

	-- mw.log(list) -- Debugging only
	return list
end

function p.strip(s)
	-- Removes all spaces at the start and at the end of a string
    return s:match("^%s*(.-)%s*$")
end

function p.lstrip(s)
	-- Removes all spaces at the start of a string
	return s:match("^%s*(.-)$")
end

function p.rstrip(s)
	-- Removes all spaces at the end of a string
	return s:gsub("%s+$", "")
end

return p