This page documents a user-defined function that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions

Imp strsub. Returns a string starting from start to length characters from start (identical to the PHP function of the same name).

string = <PREFIX>_substr(string, start [, length])

Function Parameters[edit | edit source]

Arguments[edit | edit source]

String - The subject string.
Integer - Start here. 0 and 1 have the same effect. Negative values are acceptable.
Integer - Go this many characters and stop. Negative values are acceptable.

Returns[edit | edit source]

The desired piece of the string. If the resulting string is less than 0 characters long (which can only exist in the Twilight Zone), false is returned.

Examples[edit | edit source]

string = <PREFIX>_substr("World of Warcraft", 2, 4)
string = <PREFIX>_substr("World of Warcraft", -2, -4)
string = <PREFIX>_substr("World of Warcraft", -2, 4)
string = <PREFIX>_substr("World of Warcraft", -2, -1)
string = <PREFIX>_substr("World of Warcraft", 4, -1)

Results[edit | edit source]

false -- error condition: the resulting string is negative in length and, therefore, cannot exist.
"ld of Warcraf"

Code[edit | edit source]

function <PREFIX>_substr(string, start, length)
    if not string then
        return ''
    -- Sanity checks: make sure integers are integers.
    start = floor(tonumber(start)) or 1
    if length == nil then
        length = strlen(string)
    if length < 0 and start < 0 and abs(length) > abs(start) then
        return false
    if start < 0 then
        start = strlen(string) + (start + 1)
    length = floor(tonumber(length))
    local String = ''
    if length >= 0 then
        String = strsub(string, start, (start - 1) + length)
        String = string
        String = strsub(String, start)
        String = strsub(String, 1, strlen(String) + length)
    return String
Community content is available under CC-BY-SA unless otherwise noted.