utils.utf8sub
Lua function

utils.utf8sub

Summary

Returns a substring of a UTF-8 string

Prototype

s = utils.utf8sub (str, start, end)



Description

Returns a substring of the UTF-8 string, starting at index 'start' and ending at index 'end'. Both may be negative to indicate counting from the right. The end point is optional and defaults to -1, which is the entire rest of the string.

For strings where each character has a character code of < 128, the behaviour is identical to string.sub:


utils.utf8sub ("ABCDEF", 2, 3)  --> BC
utils.utf8sub ("ABCDEF", 3)     --> CDEF
utils.utf8sub ("ABCDEF", -1)    --> F


The above examples are straight "ASCII" strings (ie. each byte is < 128), however the behaviour is different to string.sub with UTF-8 strings. For example:


utils.utf8sub (utils.fromhex ("C686C689C69C"), 1, 2)  --> (hex) C686C689
utils.utf8sub (utils.fromhex ("C686C689C69C"), -1, -1)  --> (hex) C69C


For Unicode characters (ie. whose character code is >= 128 and <= 255) then the function calculates the number of bytes that each "Unicode code point" will require, and count each one as a "column".

The supplied string must be valid UTF-8. If not, the function returns nil followed by the byte position in error.



See Also ...

Topics

DOC_lua_base Lua base functions
DOC_lua_bc Lua bc (big number) functions
DOC_lua_bit Lua bit manipulation functions
DOC_lua_coroutines Lua coroutine functions
DOC_lua_debug Lua debug functions
DOC_lua_io Lua io functions
DOC_lua_lpeg Lua LPEG library
DOC_lua_math Lua math functions
DOC_lua_os Lua os functions
DOC_lua_package Lua package functions
DOC_lua_rex Lua PCRE regular expression functions
DOC_lua Lua script extensions
DOC_lua_string Lua string functions
DOC_lua_tables Lua table functions
DOC_lua_utils Lua utilities
DOC_scripting Scripting

Lua functions

LUA_utils.base64decode utils.base64decode (Decode a string which was base-64 encoded)
LUA_utils.base64encode utils.base64encode (Encode a string with base-64 encoding)
LUA_utils.choose utils.choose (Display a combo box with choices in it)
LUA_utils.compress utils.compress (Compress a string)
LUA_utils.decompress utils.decompress (Decompress a string)
LUA_utils.directorypicker utils.directorypicker (Invokes the Windows standard "directory picker" dialog box)
LUA_utils.editbox utils.editbox (Display a large message box and get free-format reply)
LUA_utils.edit_distance utils.edit_distance (Returns the Levenshtein Edit Distance between two words)
LUA_utils.filepicker utils.filepicker (Invokes the Windows standard "file picker" dialog box)
LUA_utils.fontpicker utils.fontpicker (Invokes the Windows standard "font picker" dialog box)
LUA_utils.fromhex utils.fromhex (Convert a string from hex)
LUA_utils.functionlist utils.functionlist (Returns a table of MUSHclient world function names)
LUA_utils.getfontfamilies utils.getfontfamilies (Returns all fonts available to Windows)
LUA_utils.hash utils.hash (Hash a string, returning the hex codes)
LUA_utils.info utils.info (Information about directories, locale, etc.)
LUA_utils.inputbox utils.inputbox (Display a message box and get free-format reply)
LUA_utils.listbox utils.listbox (Display a dialog box with choices in it in a single selection list box)
LUA_utils.md5 utils.md5 (Hash a string using the 128-bit MD5 algorithm)
LUA_utils.metaphone utils.metaphone (Returns metaphones (sound-alike codes) for the supplied word)
LUA_utils.msgbox utils.msgbox (Display a message box and get a response)
LUA_utils.multilistbox utils.multilistbox (Display a dialog box with choices in it in a multiple selection list box)
LUA_utils.readdir utils.readdir (Read a disk directory into a table)
LUA_utils.sha256 utils.sha256 (Hash a string using a 256-bit hash)
LUA_utils.spellcheckdialog utils.spellcheckdialog (Spell-checker dialog)
LUA_utils.split utils.split (Split a delimited string into a table)
LUA_utils.tohex utils.tohex (Convert a string into hex)
LUA_utils.umsgbox utils.umsgbox (Display a message box and get a response (Unicode))
LUA_utils.utf8decode utils.utf8decode (Encodes a series of Unicode codes into a UTF-8 string)
LUA_utils.utf8encode utils.utf8encode (Encodes a series of Unicode codes into a UTF-8 string)
LUA_utils.utf8valid utils.utf8valid (Checks if a UTF-8 string is valid)
LUA_utils.xmlread utils.xmlread (Parses an XML string into a nested table)

(Help topic: lua=utils.utf8sub)

DOC_contents Documentation contents page